@Valid
와 @Validated
@Valid 어노테이션은 주로 request body
를 검증하는데 많이 사용된다.
MethodArgumentNotValidException
예외 발생ConstraintViolationException
예외를 발생📌 즉, @Validated는 주로 스프링에서 제공하는 유효성 검사 기능을 사용할 때 컨트롤러에 적용되며, 그 안에서 유효성 검사를 수행합니다. 반면에 @Valid는 주로 Bean Validation API를 사용하여 엔티티나 DTO 등에서 유효성 검사를 수행할 때 사용됩니다.
스프링(spring-boot-starter-validation
)에서 기본적으로 제공합니다.
@Configuration
public class ValidationConfig {
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
log.info("유효성 검사");
return new MethodValidationPostProcessor();
}
}
@NotBlank
@NotBlank(message = "이메일을 입력해주세요")
💡 즉, 해당 필드가 null이 아니고 + 최소한 한 개 이상의 공백이 아닌 문자가 포함되어 있는지를 검사
@Size
@Size(min = 2, max = 50, message = "제품명은 2글자에서 50글자 사이여야 합니다")
조건을 만족하지 않으면 지정된 메시지를 포함한 에러가 발생한다.
@Email
public class SignUpRequest {
@NotBlank(message = "이메일을 입력해주세요")
@Email(message = "올바른 이메일 형식이어야 합니다")
private String email;
}
example.com
)