본문 바로가기

공부 기록/Spring

[Spring] Validation(1) - Annotation

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