Bean Validation 소개
유저에게 받은 입력 값을 검증하는 것은 애플리케이션에서 중요하며 자주 쓰인다. Validation 은 이러한 검증을 책임진다.
Java Bean Validation 은 오브젝트, 오브젝트 멤버, 오브젝트 메서드, 오브젝트 생성자 에 대한 검증을 제공한다. Bean Validation 은 Java EE 컨테이너와 통합하여, 개발자가 쉽게 검증 제약조건을 정의할 수 있도록 도와준다.
Bean Validation 은 어떤 기술인가?
- Bean Validation 은 Java EE 7 platform 의 일부이다.
- JSR 380 이라는 API 구현 명세를 따른다.
자바 EE 가 무엇인지 잘 모른다면, 자바 EE 란 무엇인가 를 한번쯤 읽어보는 것이 좋다.
여기서 말하는 Bean 이란? 아마 getter/setter를 가지고 기본 생성자가 있는 객체를 말하는 것 같다.
Bean Validation 사용 조건
자바 8 혹은 그 이상의 자바 버전에서 사용하는 것이 권장된다. 그래야 Optional
, LocalDate
와 같은 지원을 완전히 다 받을 수 있다.
Java Bean Validation 사용하기
- JavaBean 컴포넌트의 클래스, 메서드, 필드에 애노테이션을 위치시키는 방식으로 지원한다.
- 제약 조건은 만들어져 있는 것을 쓸 수도 있고, 사용자가 직접 커스텀 제약 조건을 만들 수도 있다.
javax.validation.constraints
패키지에서 빌트인 제약 조건들을 제공한다.- 커스텀 제약조건 만들기 튜토리얼에 커스텀 제약조건에 대한 자세한 설명이 있다.
사용되는 의존성
javax.validation
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
검증 애노테이션 API 를 이용하기 위한 역할이다.
hibernate.validator
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
검증 애노테이션 API 를 이용하여 실제로 검증을 해주는 역할이다.
이
hibernate.validator
는 ORM 지원 등에 사용되는 Java Persistence 와는 완전히 분리된 것이다.
빌트인 빈 검증 제약 조건들
@AssertTrue
,@AssertFalse
: 값은 반드시True
혹은False
를 반환해야 한다.@DecimalMax
,@DecimalMin
: 10진수에서 값이 작거나 같아야(Max
) 하거나 크거나 같아야(Min
) 할 때 쓴다. (소수점 가능)@Digits(integer6, fraction=2)
: 자리수를 제한한다. ex) 정해진 길이의 정수와 소수만 써야 한다.@Max
,@Min
: 최대 최소 제약. integer 인 경우에만 사용 가능하다. (소수점 불가)@Null
,@NotNull
:null
이거나null
이면 안 되거나.@Past
,@Future
: 현재에서 미래냐 과거냐에 따라 제약을 건다.@Pattern(regexp="d{3}")
: 정규표현식 패턴을 이용해 제약조건을 걸 수 있다.@Size
: 문자열 길이, 컬렉션 길이 등의 제약조건을 걸 수 있다.
함께 읽어볼만한 글
'Java > 자바 잡지식' 카테고리의 다른 글
스프링의 @Value 애노테이션이란? (2) | 2022.05.01 |
---|---|
DTO (Data Transfer Object) 란? (0) | 2022.04.27 |
Java EE GenerationType 정리 (2) | 2022.04.26 |
Java EE @GeneratedValue 공식문서 번역 정리 (0) | 2022.04.26 |
Lombok 을 사용할 때 주의해야 하는 점들 정리 (0) | 2022.04.23 |