Validation
- Error나 Exception을 방지하기 위해서 미리 검증하는 과정
- 개발자가 주로 챙겨야 하는 검증은 크게 두 종류로 나뉜다. => 데이터 검증, 비즈니스 검증
데이터 검증
- 필수 데이터의 존재 유무
- 문자열의 길이나 숫자형 데이터의 경우 값의 범위
- email 등 특정 형식에 맞춘 데이터
비즈니스 검증
- 서비스의 정책에 따라 데이터를 확인하여 검증
- 경우에 따라 외부 API를 호출하거나 DB의 데이터까지 조회하여 검증하는 경우도 있다.
비즈니스 로직에 검증 코드 삽입 시 주의사항
1. 여러 가지 상황에 대해 검증 시 코드의 길이가 길어질 수 있다.
2. 핵심 로직과의 분리가 필요하다.
3. 검증 로직이 흩어져 있는 경우 혼란을 초래하고 재사용하기 어렵다.
스프링이 제공하는 Validation Annotation
@Vaild : 해당 객체의 검증 실행
@Size : 문자의 길이 검증
@NotNull : NULL 불가
@NotEmpty : NULL, "" 불가
@NotBlank : NULL, "", " " 불가
@Max : 최대값 지정
@Min : 최소값 지정
@Pattern : 정규식을 이용한 검증
@Past / PastOrPresent / Future / FutureOrPresent : 날짜 검증
@AssertTrue / False : 별도 커스텀 로직 적용
의존성 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
}
build.gradle
Validation Annotation 적용하기
@Getter
public class member {
@NotBlank
private String name;
@Min(value = 10)
private int age;
@Email
private String email;
@Pattern(regexp = "^\\d{2,3}-\\d{3,4}-\\d{4}$") // 정규식
private String phoneNumber;
}
@RestController
@RequestMapping("/valid")
public class validController {
@PostMapping("/member")
public Member valid(@Valid @RequestBody Member member, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
...
}
... // 검증에 문제 없을 경우 실행될 로직
return member;
}
}
BindingResult : Validation의 결과 값이 들어온다. hasErros() 메서드를 통해 검증 결과에 이상이 없는지 판별할 수 있다.
* 핸드폰 번호를 검증할 수 있는 정규식
"^\\d{2,3}-\\d{3,4}-\\d{4}$"
'공부 기록 > Spring' 카테고리의 다른 글
[Spring] Exception Handling (0) | 2023.05.04 |
---|---|
[Spring] Validation(2) - Custom Validation (0) | 2023.05.01 |
[Spring] AOP의 활용 (0) | 2023.04.27 |
[Spring] AOP (0) | 2023.03.28 |
[Spring] IoC(Inversion of Control, 제어의 역전), DI (0) | 2023.03.23 |