@Validated
는 Spring에서 **유효성 검사(Validation)**를 쉽게 할 수 있도록 도와주는 어노테이션입니다. 주로 입력받은 데이터가 유효한지 검사할 때 사용되며, 주로 컨트롤러나 서비스 계층에서 자주 사용됩니다.
예를 들어, 웹 애플리케이션에서 사용자가 회원가입을 할 때 username
이 반드시 입력되어야 한다면, 유효성 검사를 통해 username
이 비어있거나 특정 길이를 넘지 않도록 확인하는 것이 중요합니다. 이런 검사를 @Validated
와 다른 유효성 어노테이션들을 통해 자동으로 할 수 있습니다.
@Validated
는 클래스나 메서드에 붙여서 그 안에 있는 파라미터나 객체의 유효성을 검사합니다. 이때, @NotNull
, @Size
, @Min
, @Max
같은 유효성 관련 어노테이션을 같이 사용해 조건을 설정할 수 있습니다.
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
@Validated // 클래스에 @Validated를 붙여 유효성 검사를 활성화
public class UserService {
public void createUser(@NotNull @Size(min = 3, max = 20) String username) {
// username이 null이거나 3자 미만, 20자 초과면 오류가 발생
System.out.println("Creating user: " + username);
}
}
위 예제에서는 UserService
클래스에 @Validated
를 붙여 이 클래스에서 유효성 검사를 활성화했습니다. createUser
메서드에서 username
파라미터는 @NotNull
과 @Size(min = 3, max = 20)
조건을 가지고 있기 때문에, username
이 비어있거나 3자 미만, 20자를 초과하면 Spring이 자동으로 예외를 발생시킵니다.
유효성 검사에는 다양한 어노테이션을 사용할 수 있습니다.
@NotNull
: null이 아닌 값을 요구합니다.@Size
: 문자열 또는 컬렉션의 크기를 제한합니다. (@Size(min = 3, max = 20)
)@Min
/ @Max
: 숫자 값의 최소/최대 값을 설정합니다. (@Min(1)
)@Email
: 올바른 이메일 형식을 요구합니다.@Pattern
: 정규식을 사용하여 값의 형식을 설정합니다.이런 어노테이션을 @Validated
와 함께 사용하면 파라미터나 객체의 값이 조건에 맞는지 쉽게 검사할 수 있습니다.
경우에 따라 유효성 검사 조건을 여러 단계로 나누고 싶을 때가 있습니다. 예를 들어, 회원가입과 회원정보 수정 시에 요구되는 조건이 다를 수 있습니다. 이런 경우 **그룹(Group)**을 지정해 상황에 맞는 유효성 검사를 할 수 있습니다.
import javax.validation.groups.Default;
public class ValidationGroups {
public interface CreateUser extends Default {}
public interface UpdateUser extends Default {}
}
@Validated(ValidationGroups.CreateUser.class)
public void registerUser(@NotNull(groups = ValidationGroups.CreateUser.class) String username) {
// 회원가입 시 필요한 유효성 검사
}
@Validated(ValidationGroups.UpdateUser.class)
public void updateUser(@NotNull(groups = ValidationGroups.UpdateUser.class) String username) {
// 회원정보 수정 시 필요한 유효성 검사
}