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
'Spring > Spring-detail' 카테고리의 다른 글
@Builder 빌더패턴 (0) | 2022.10.01 |
---|---|
HTTP 메서드 종류 (0) | 2022.10.01 |
Logback 설정 + 테스트 (1) | 2022.09.21 |
테스트 코드의 개념에 대해 알아보자 (JUnit, TDD) (0) | 2022.09.15 |
ORM 이란 무엇일까? (0) | 2022.09.15 |
댓글