DevKim

@Valid 사용하여 @RequestBody 객체 검증하기 본문

Spring Boot

@Valid 사용하여 @RequestBody 객체 검증하기

on_doing 2021. 7. 13. 16:27
728x90
@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 =)

: 지정된 최소 값보다 크거나 같아야 한다.     

 

 

등등 다양한 검증 어노테이션을 제공하니,

사용할 일이 있으면 그때그때 찾아서 유용하게 사용하자.

728x90
Comments