유효성 검사 🍥

jiji·2023년 11월 20일
0

Spring Boot Project 🌱

목록 보기
12/16

@Valid@Validated

@Valid 어노테이션은 주로 request body를 검증하는데 많이 사용된다.

  • @Valid는 Java 표준(JSR-380)에서 제공되며, 주로 자바 Bean Validation API에 따라 유효성 검사를 수행합니다. 이를 사용하려면 해당 객체가 유효성 검사를 지원하는데 필요한 제약 조건(annotation)을 가지고 있어야 합니다.
    • MethodArgumentNotValidException 예외 발생
  • @Validated는 스프링 프레임워크에서 제공되는 어노테이션으로, 주로 스프링 MVC의 컨트롤러 레벨에서 메소드 파라미터 유효성 검사를 지원합니다.
    • ConstraintViolationException 예외를 발생

📌 즉, @Validated는 주로 스프링에서 제공하는 유효성 검사 기능을 사용할 때 컨트롤러에 적용되며, 그 안에서 유효성 검사를 수행합니다. 반면에 @Valid는 주로 Bean Validation API를 사용하여 엔티티나 DTO 등에서 유효성 검사를 수행할 때 사용됩니다.

MethodValidationPostProcessor

스프링(spring-boot-starter-validation)에서 기본적으로 제공합니다.

@Configuration
public class ValidationConfig {

  @Bean
  public MethodValidationPostProcessor methodValidationPostProcessor() {
    log.info("유효성 검사");
    return new MethodValidationPostProcessor();
  }
}

🍥 게시판 유효성 검사

@NotBlank

@NotBlank(message = "이메일을 입력해주세요")
  • Hibernate Validator(Bean Validation API 구현체)에서 제공하는 애너테이션
  • 주로 문자열 타입의 필드에 사용, 해당 필드가 null이 아니고, 비어 있지 않음을 보장한다.
  • 일반적으로 DTO(Data Transfer Object)의 필드에 적용하여 유효성 검사를 수행 (ex. 회원가입 폼, 게시글 작성 등)

💡 즉, 해당 필드가 null이 아니고 + 최소한 한 개 이상의 공백이 아닌 문자가 포함되어 있는지를 검사

@Size

@Size(min = 2, max = 50, message = "제품명은 2글자에서 50글자 사이여야 합니다")

조건을 만족하지 않으면 지정된 메시지를 포함한 에러가 발생한다.

🍥 로그인 유효성 검사

@Email

  • 주로 Spring Validation에서 사용
public class SignUpRequest {
    @NotBlank(message = "이메일을 입력해주세요")
    @Email(message = "올바른 이메일 형식이어야 합니다")
    private String email;
}
  • 올바른 이메일 주소의 형식을 준수하는지 ck
    • @ 기호
    • 도메인 (ex. example.com)

0개의 댓글