// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation
implementation 'org.springframework.boot:spring-boot-starter-validation:3.0.2'
내부적으로 hibernate-validator 를 가지고 있다.
이 링크에 아주 자세히 나와있다.
https://docs.jboss.org/hibernate/validator/8.0/reference/en-US/html_single/#validator-defineconstraints-spec
아래의 내용은 모두 공식문서에서 비롯되었다.
https://www.baeldung.com/javax-validation
어떤 타입이든 허용 Null이어야 한다.
null 이 아닌 어떤 타입이든 허용한다.
반드시 값이 있어야 한다.
@NotNull(message = "이름은 필수 값 입니다.")
private String name;
null 이거나 빈 문자열("")이면 안된다.
@NotBlank(message = "이름은 필수 값 입니다.")
private String name;
null 이거나 빈 문자열("")이거나 공백 문자열(" ")이면 안된다.
@NotNull(message = "이름은 필수 값 입니다.")
private String name;
@AssertTrue
private boolean true;
이상, 이하 체크 (value 값과 같은 값도 허용)
@Min(value = 1)
private int min;
@DecimalMax(value=, inclusive=) , @DecimalMin(value=, inclusive=)
소수까지 검증 가능
inclusive=true
시 value 값도 허용됨 (이상, 이하)
inclusive=false
시 value 값 불허용됨 (초과, 미만)
@DecimalMin(value = "0.1", inclusive = false)
protected Double minBalance;
@DecimalMax(value = "1000000", inclusive = false)
protected Double maxBalance;
@Size(min=, max=)
min과 max 로 설정한 경계(포함) 안의 값이어야 한다.
적용 가능 타입 : CharSequence, Collection, Map and arrays
현재 보다 미래
현재 또는 미래
현재 보다 과거
현재 또는 과거
java.util.Date java.util.Calendar
java.time.Instant java.time.LocalDate
java.time.LocalDateTime java.time.LocalTime
java.time.MonthDay java.time.OffsetDateTime
java.time.OffsetTime java.time.Year
java.time.YearMonth java.time.ZonedDateTime
java.time.chrono.HijrahDate
java.time.chrono.JapaneseDate
java.time.chrono.MinguoDate
java.time.chrono.ThaiBuddhistDate
양수만 가능
양수 또는 0
음수
음수 또는 0
integer= 허용되는 최대 정수 자릿수
fraction= 허용되는 최대 소수 자릿수
@Digits(integer = 3, fraction = 4)
private Integer digits;
이메일 주소 형식인지 확인
선택적 파라미터 regexp
와 flags
를 사용하면 추가적으로 일치해야하는 정규식을 지정가능
CharSequence
가 regex와 맞는지 검증
Checks if the annotated string matches the regular expression regex considering the given flag match (flag 부분 해석 확실치 않음)
@Pattern(regexp = "(.+?)@(.+?)")
protected String email;