-@Valid는 빈 검증기(Bean Validator)를 이용해 객체의 제약 조건을 검증하도록 지시하는 어노테이션
먼저 의존성을 추가한다(gradle형식)
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation'
예를 들어 @NotNull 어노테이션은 필드의 값이 null이 아님을 확인하도록 하며 @Main은 해당 값의 최솟값을 지정할 수 있도록 함
@Getter
@RequiredArgsConstructor
public class AddUserRequest {
@Email
private final String email;
@NotBlank
private final String pw;
@NotNull
private final UserRole userRole;
@Min(12)
private final int age;
}
그리고 다음과 같이 컨트롤러의 메소드에 @Valid를 붙여주면 유효성 검증이 진행됨
-입력 파라미터의 유효성 검증은 컨트롤러에서 최대한 처리하고 넘겨주는 것이 좋지만 개발을 하다보면 불가피하게 다른 곳에서 파라미터를 검증해야 할 수 있음 Spring에서는 이를 위해 AOP기반으로 메소드의 요청을 가로채서 유효성 검증을 진행해주는 @Validated를 제공하고 있음
다음과 같이 클래스에 @Validated를 붙여주고, 유효성을 검증할 메소드의 파라미터에 @Valid를 붙여주면 유효성 검증이 진행됨
@Service
@Validated
public class UserService {
public void addUser(@Valid AddUserRequest addUserRequest) {
...
}
}