자바 @Valid 사용해보기1. Valid를 사용하는 방법1-1 @Valid 적용시키기2. 검증 애노테이션 종류2-1 문자열 검증2-2 최대 / 최소 검증2-3 범위 검증2-4 시간 값 검증2-5 Bolean 검증2-6 크기 검증3. 자바 Valid 제공하지 않는것은 무엇일까?
자바 @Valid 사용해보기
1. Valid를 사용하는 방법
- @Valid 애노테이션을 이용하면, 객체 안에서 들어오는 값에 대해 검증이 가능해진다.
1-1 @Valid 적용시키기
- 값이 올바르게 들어오지 않았다면 MethodArgumentNotValidException 예외와 400 Bad Request 상태코드를 반환하게 된다.
2. 검증 애노테이션 종류
2-1 문자열 검증
- @NotBlack
- null이 아닌 값
- 공백이 아닌 문자를 하나 이상 포함해야한다.
- 반드시 값이 존재하고 공백 문자를 제외한 길이가 0보다 커야한다.
- @NotEmpty
- null 이거나 empty(빈 문자열)가 아니어야 한다.
- 반드시 값이 있어야하며 길이가 0보다 커야아한다.
- @NotNull
- null이 아닌 값은 어떤 타입이든 상관없다.
- 반드시 값이 있어야함
- @Null
- 타입은 상관없으며 null값 허용

2-2 최대 / 최소 검증
- @DecimalMax
- 지정된 최댓값보다 작거나 같아야함.
- @DecimalMin
- 지정된 최솟값보다 크거나 같아야함.
- @Max
- 지정된 최댓값보다 작거나 같아야함.
- @Min
- 지정된 최솟값보다 크거나 같아야함.
Decimal과 기본 Max/Min의 차이는 범위 값의 차이다. String을 사용하는지 Integer를 사용하는지에 따라 범위가 달라지기 때문이다.
2-3 범위 검증
- @Positive
- 양수인 값
- @PositiveOrZero
- 0이거나 양수인 값
- @Negative
- 음수인 값
- @NegativeOrZero
- 0이거나 음수인 값
2-4 시간 값 검증
- @Future
- Now 보다 미래의 날짜, 시간이어야 한다.
- @FutureOrPresent
- Now 거나 미래의 날짜, 시간이어야 한다.
- @Past
- Now 보다 과거의 날짜, 시간이어야 한다.
- @PastOrPresent
- Now 거나 과거의 날짜, 시간이어야 한다.
2-5 Bolean 검증
- @AssertTrue
- 항상 True 여야 한다.
- @AssertFalse
- 항상 False 여야 한다.
2-6 크기 검증
- @Size
- max > 값의 크기가 max보다 작거나 같아야 한다.
- min > 값의 크기가 min보다 크거나 같아야 한다.
이 외에도 추가적인 것들이 더 있다. https://docs.jboss.org/hibernate/beanvalidation/spec/2.0/api/
3. 자바 Valid 제공하지 않는것은 무엇일까?
- Valid는 @Validated와 다르게 그룹 유효성 검사를 지원하지 않는다는 차이점이 있다.
- 이러한 경우에는 @Validated 애노테이션을 이용해야 한다.