DevKim
@Valid 사용하여 @RequestBody 객체 검증하기 본문
@Valid를 사용하면, 객체 안에 들어오는 값에 대해 검증을 할 수 있다.
✔ 최신 springboot에서는 validation 을 따로 꼭 추가해주어야함
만약 이런 controller가 존재한다고 가정했을 때, @Valid 를 추가함으로써 MemberDto를 검증할 수 있다.
@GetMapping("api/orders")
public void Orders(@RequestBody @Valid MemberDto memberDto)
{
...
}
검증에 대한 추가적인 조건들은 따로 객체 안에 정의를 해두어야한다.
public class MemberDto{
@NotNull
private String name;
@Email
private String email;
private String address;
}
만약 name에 null값이 들어오게되면, MethodArgumentNotValidException이 발생하게되는데,
이는 곧, @Valid와 검증 어노테이션만으로도 객체 단에서 에러를 잡을 수 있다는 뜻이다.
다양한 검증 어노테이션이 존재하는데 자주 쓰일 것 같은 애들만 정리해본다.
1. 문자열 유무 검증
(@NotBlank, @NotEmpty, @NotNull의 차이점)
@NotBlank
- null 이 아닌 값이다.
- 공백이 아닌 문자를 하나 이상 포함한다
@NotEmpty
- null 이거나 empty(빈 문자열)가 아니어야 한다.
@NotNull
- Type : 어떤 타입이든 수용한다.
- null 이 아닌 값이다.
@Null
- Type :어떤 타입이든 수용한다.
- null 값이다.
2. 최대 최소에 대한 검증
✔ BigDecimal BigInteger CharSequence byte, short, int, long, 이에 대응하는 Wrapper 클래스
✔ double, float는 rounding error 때문에 지원하지 않는다.
✔ null도 valid로 간주된다.
- @DecimalMax(value =max값 지정)
: 지정된 최대 값보다 작거나 같아야 한다.
- @DecimalMin(value= )
: 지정된 최소 값보다 크거나 같아야 한다.
- @Max(value= )
: 지정된 최대 값보다 작거나 같아야 한다.
- @Min(value =)
: 지정된 최소 값보다 크거나 같아야 한다.
등등 다양한 검증 어노테이션을 제공하니,
사용할 일이 있으면 그때그때 찾아서 유용하게 사용하자.
'Spring Boot' 카테고리의 다른 글
[Test Code] 단위 테스트 - Mockito & @MockMvcTest (0) | 2021.07.14 |
---|---|
[성능 최적화] 지연로딩과 조회 성능 : XToOne (0) | 2021.07.13 |
[스프링 with AWS] git clone 후 배포 스크립트 만들기 (0) | 2021.07.13 |
[스프링 with AWS] RDS 생성 후 파라미터 설정, EC2와 연동 (0) | 2021.07.12 |
[스프링 with AWS] EC2 인스턴스 생성, putty 로 원격접속 후 필수 설정들 (0) | 2021.07.12 |