개발/부트캠프

본캠프 : Spring 숙련_Bean Validation

EJ EJ 2025. 2. 12. 21:14

[ Bean Validation 적용 방법 ]

-Bean Validation입력 값(데이터)의 유효성을 검사하는 기능을 제공하는 표준 Java API입니다.
-Spring Boot에서는 javax.validation 패키지를 사용하여 자동 검증을 쉽게 적용할 수 있습니다.

-핵심 개념:

  • @Valid 또는 @Validated를 사용하여 컨트롤러에서 검증 수행
  • @NotNull, @Size, @Pattern 등의 유효성 검증 어노테이션 적용
  • 검증 실패 시 예외 처리 (MethodArgumentNotValidException)

1. Bean Validation 의존성 추가

 

2. 요청 DTO 클래스에 검증 어노테이션 적용

@NotNull

@NotEmpty

@NotBlank

@Email

@Size(min, max)

@Pattern(regexp = "정규식")

@Min(value)

@Max(value)

 

3. 컨트롤러에서 @Valid 적용하여 검증 수행

 

  • @Valid → DTO 필드에 설정된 검증 어노테이션을 확인
  • 검증 실패 시, MethodArgumentNotValidException 발생
  • 기본적으로 Spring Boot는 400 Bad Request 응답을 반환하지만,
    더 친절한 에러 메시지를 반환하려면 @RestControllerAdvice를 사용하여 예외를 처리할 수 있습니다.

 

4. 서비스에서도 검증 (@Validated)

@Valid는 컨트롤러에서만 동작하지만,
서비스 계층에서도 유효성 검사를 수행하려면 @Validated를 사용합니다.

 

  • @Validated → 클래스 수준에서 Bean Validation을 활성화
  • @Valid → 메서드 파라미터에 DTO 검증 적용

*추가 예제 : @Pattern으로 비밀번호, 휴대폰번호 복잡도 검사

 

@Pattern(regexp = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$",

                 message = "비밀번호는 최소 8자 이상이며, 영문/숫자/특수문자를 포함해야 합니다.")

private String password;

 

@Pattern(regexp = "^010-\\d{4}-\\d{4}$",

                 message = "휴대폰 번호는 010-XXXX-XXXX 형식이어야 합니다.")

private String phoneNumber;