티스토리 뷰
Bean Validation
Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 쉽게 이야기해서 검증 애노테이션과 여러 인터페이스의 모음이다. 마치 JPA가 표준 기술이고 그 구현체로 하이버네이트가 있는 것과 같다.
Bean Validation을 구현한 기술중에 일반적으로 사용하는 구현체는 하이버네이트 Validator 이다. 이름이 하이버네이트가 붙어서 그렇지 ORM과는 관련이 없다.
의존관계 추가
Bean Validation을 사용하려면 build.gradle
에 의존관계를 추가해야 한다.
implementation 'org.springframework.boot:spring-boot-starter-validation'
의존관계를 추가하면 아래와 같은 라이브러리가 추가 된다.
jakarta.validation-api
: Bean Validation 인터페이스hibernate-validator
: 구현체
Validator를 검증하기 위한 Item 클래스를 작성해보자.
public class Item {
private Long id;
@NotBlank
private String itemName;
@NotNull
@Range(min = 1000, max = 1000000)
private Integer price;
@NotNull
@Max(9999)
private Integer quantity;
}
@NotBlank
: 빈값 + 공백만 있는 경우를 허용하지 않는다.@NotNull
: null 을 허용하지 않는다.@Range(min = 1000, max = 1000000)
: 범위 안의 값이어야 한다.@Max(9999)
: 최대 9999까지만 허용한다.
javax.validation
으로 시작하면 특정 구현에 관계없이 제공되는 표준 인터페이스이고,org.hibernate.validator
로 시작하면 하이버네이트validator
구현체를 사용할 때만 제공되는 검증 기능이다. 실무에서 대부분 하이버네이트validator
를 사용하므로 자유롭게 사용해도 된다.
Item 클래스를 사용하여 Validator로 검증해보자.
@Test
void beanValidation() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Item item = new Item();
item.setItemName(" ");
item.setPrice(0);
item.setQuantity(10000);
Set<ConstraintViolation<Item>> violations = validator.validate(item);
for (ConstraintViolation<Item> violation : violations) {
System.out.println("violation = " + violation);
System.out.println("violation.getMessage() = " + violation.getMessage());
}
}
실행 결과
validation.getMessage() = 공백일 수 없습니다.
는 Validation
기본 에러 메시지 이다.
이를 변경하고 싶다면 @NotBlank(message = "공백 X")
이런식으로 어노테이션에 message를 추가하면 된다.
'Spring' 카테고리의 다른 글
[Spring] ApplicationContext (0) | 2022.03.13 |
---|---|
[Spring] Singleton, SingletonContainer (0) | 2022.01.22 |
[Spring] interceptor를 이용한 로그인 확인 기능 구현 (0) | 2022.01.21 |
[스프링] 의존성 주입(Dependency Injection) (0) | 2022.01.18 |
[Spring] filter를 이용한 로그인 확인 기능 구현 (0) | 2022.01.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코틀린
- 구현
- MySQL
- 김영한
- 노마드
- kotlin
- 코테
- 릿코드
- 스프링
- 정렬
- 알고리즘
- 그리디
- Algorithm
- 데이터베이스
- 스프링부트
- 인프런
- 노마드코더
- 파이썬
- webflux
- 북클럽
- Spring
- 자료구조
- mysql 8.0
- leetcode
- 백준
- Real MySQL
- 문자열
- spring boot
- 스프링 부트
- 리팩토링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함