코딩마을방범대
@Valid와 @Validated 본문
728x90
클라이언트 측에서 넘어온 데이터를 바인딩 할 때 유효성 검사를 위한 어노테이션
컨트롤러에서 사용 가능하며, 유효성 검사를 할 항목은 해당 객체에서 설정해주어야 함
유효성 검사를 위한 어노테이션 종류
Anotation | 제약조건 |
@NotNull | Null 불가력 가능 |
@Null | Null 입력 가능 |
@NotEmpty | Null, 빈 문자열 불가 |
@NotBlack | Null, 빈 문자열, 스페이스만 있는 문자열 불가 |
@Size(min= , max= ) | 문자열, 배열등의 크기가 만족하는지 |
@Pattern(regex= ) | 정규식을 만족하는지 |
@Max(숫자) | 지정 값 이하인지 |
@Min(숫자) | 지정 값 이상인지 |
@Future | 현재 보다 미래인지 |
@FutureOrPresent |
현재와 동일하거나 미래인지 |
@Past | 현재 보다 과거인지 |
@PastOrPresent |
현재와 동일하거나 과거인지 |
@Positive | 양수만 가능 |
@PositiveOrZero | 양수와 0만 가능 |
@Negative | 음수만 가능 |
@NegativeOrZero | 음수와 0만 가능 |
이메일 형식만 가능 | |
@Digits(integer= , fraction = ) | 대상 수가 지정된 정수와 소수 자리 수보다 작은지 |
@DecimalMax(value= ) | 지정된 값(실수) 이하인지 |
@DecimalMin(value= ) | 지정된 값(실수) 이상인지 |
@AssertFalse | false 인지 |
@AssertTrue | true 인지 |
@Valid
- 해당 객체의 유효성 검사를 진행함
- 검사 진행 후 에러가 발생 시 SpringBoot가 생성한 Data 값으로 자동 reponse 됨
ex) 400 / Bad Request
검사 진행 후 유효성 검사 error 시 MethodArgumentNotValidException이 발생
이 Exception을 이용해 ExceptionHadnler 조작 시 response 값을 바꿀 수 있음
@Validated
- @Valid 기능을 확장한 어노테이션
- 특정 필드만 검사 하고 싶을 경우 필드를 그룹핑하여 진행 가능
사용 방법
1. Group 클래스에 그룹별 interface 생성
public class ValidationGroups {
public interface groupA {};
public interface groupB {};
}
2. 객체의 필드 별 그룹 적용
public class Article {
private Long id;
@NotEmpty(group = {ValidationGroups.groupA.class})
private String title;
@NotEmpty(group = {ValidationGroups.groupB.class})
private String content;
...
}
3. 컨트롤러에서의 사용
@RestController
public class ArticleController {
...
@PostMapping("/article/write")
public ResponseEntity articleWrite(@RequestBody
@Validated(ValidationGroup.groupB.class) Article article) {
...
}
}
참고사이트
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
웹 소켓을 이용한 메시지 전송(백엔드 - SpringBoot) (0) | 2023.06.01 |
---|---|
실무에서 쓰이는 어노테이션 및 메소드 (0) | 2023.05.31 |
GenerationType의 IDENTITY와 SEQUENCE (0) | 2023.05.29 |
ExceptionHandler를 통한 response 처리 (0) | 2023.05.29 |
SpringBoot Custom Annotation 생성하기 - (2) 메소드에 부여 (1) | 2023.05.29 |