Spring/Spring-detail

유효성 검사(Validation)

YoonJong 2022. 9. 21. 10:51
728x90

유효성 검사 / 데이터 검증 (Validation)

 - 서비스의 비즈니스 로직이 옳바르게 동작하기 위해 사용되는 데이터에 대한 사점 검증하는 작업 

 - 데이터의 검증은 여러 계층에서 발생

 - 데이터에 대해 의도한 형식의 값이 제대로 들어오는지에 대해 체크하는 과정

 

일반적인 Validation 은 문제가 많았다.

어플리에킹션 전체적으로 분산이 되어있었고, 코드의 중복이 심하고, 비즈니스 로직에 섞여 추적이 어려웠다.

 

이런 문제를 해결하기 위해 Bean Validation 프레임워크가 제공되었다.

어노테이션을 통해 다양한 데이터를 검증할 수 있다.

 

어노테이션 설명
@Size 문자의 길이 조건
@NotNull null 값 불가
@NotEmpty @NotNull + "" 값 불가
@NotBlank @NotEmpty + "" 값 불가
@Past 과거날짜
@Future 미래날짜
@Pattern 정규식을 통한 조건
@Max 최대값 조건설정
@Min 최소값 조건설정
@AssertTrue 참 조건 설정
@AssertFalse 거짓 조건 설정
@Valid 객체의 유효성 검사

 

해당 기능을 사용하기 위해서는 validation 디펜던시를 추가해야 한다. (2.3 버전 이상)

implementation 'org.springframework.boot:spring-boot-starter-validation'

 

사용법 

검증이 객체위에 필요한 어노테이션과 옵션을 설정한다.

public class ProductDto {

    @NotNull
    private String productId;

    @NotNull
    private String productName;

    @NotNull
    @Min(value = 500)
    @Max(value = 3000000)
    private int productPrice;

    @NotNull
    @Min(value = 0)
    @Max(value = 9999)
    private int productStock;

 

사용되는 컨트롤러에서 @Valid 를 추가해주어야 정상작동

@PostMapping("/product")
public ResponseEntity<ProductDto> createProduct(@Valid @RequestBody ProductDto productDto) {
	...
}
728x90