◆ Bean Validation
- Bean Validation 검증기는 선언된 제약 조건에 따라 해당 클래스의 인스턴스를 검증한다.
- 예제 코드 ↓
public class PersonForm {
@NotNull
@Size(max=64)
private String name;
@Min(0)
private int age;
}
◆ Validator
- Spring Boot는 validation 라이브러리를 설정하면 자동으로 Bean Validator를 Spring에 통합되도록 설정해준다.
- Global Validator가 Defualt로 적용되어 있어 @Valid, @Validated 애너테이션을 달아 사용해주면 된다.
- Bean Validation Annotation 종류 예시
1) @NotBlank -> 가장 많은 제약을 갖고있음
- null 을 허용하지 않는다.
- 공백(" ")을 허용하지 않는다. (하나 이상의 문자를 포함해야 한다.)
- 빈칸("")을 허용하지 않는다.
- CharSequence 타입 허용
2) @NotNull
- null을 허용하지 않는다.
- 모든 타입을 허용한다.
3) @NotEmpty
- null을 허용하지 않는다.
- 빈칸("")을 허용하지 않는다.
- CharSequence, Collection, Map, Array 허용
◆ @Valid 와 @Validated의 차이점
- @Valid : 자바 표준 검증 (Hibernate Validator)
- @Validated : 스프링 전용 검증
- @Validated를 통해 Group Validation 혹은 Controller 이외 계층에서 Validation 사용이 가능하다. (잘 사용하지는 않는다.)
- @Valid는 MethodArgumentException 예외를 발생시킨다.
- @Validated는 ConstrainViolationException 예외를 발생시킨다. ( = 서로 발생시키는 예외가 다르다.)
Q. Hibernate Validator와 Bean Validation의 관계는 무엇인가?
A. Bean Validation은 인터페이스이고 Hibernate Validator가 구현체이다. 둘이 구분지어 사용한다기 보다는 인터페이스와 구현체의 관계구나 라는 것만 알고 validation을 자유롭게 사용하면 된다.
[참고]
https://hibernate.org/validator/ → 하이버네이트 validator 공식 문서
https://docs.spring.io/spring-framework/reference/core/validation/beanvalidation.html → 스프링 자바 bean validation 공식 문서
'내일배움캠프 > TIL' 카테고리의 다른 글
[Spring_4기 본캠프] Spring 숙련 - 2주차 - 예외처리 | Day 43 (0) | 2024.12.15 |
---|---|
[Spring_4기 본캠프] Spring 숙련 - 1주차 - 다양한 인증방식 | Day 42 (0) | 2024.12.13 |
[Spring_4기 본캠프] 일정관리 앱 회고, Develop 과제 발제 | Day 40 (0) | 2024.12.11 |
[Spring_4기 본캠프] 일정관리 앱 API 명세서와 트러블 슈팅 | Day 39 (1) | 2024.12.10 |
[Spring_4기 본캠프] 일정관리 앱 만들기 과제 ERD 다이어그램 | Day 38 (0) | 2024.12.09 |