[SPRING] Validation

야부엉·2023년 11월 14일
0

1. Validation

1. Validation이란?

  • Spring에서는 null 확인 뿐만아니라 문자의 길이 측정과 같은 다른 검증 과정도 쉽게 처리할 수 있게 Bean Validation을 제공한다.

2. Bean Validation

  • @NotNullnull 불가
    @NotEmptynull, “” 불가
    @NotBlanknull, “”. “ “ 불가
    @Size문자 길이 측정
    @Max최대값
    @Min최소값
    @Positive양수
    @Negative음수
    @EmailE-mail 형식
    @Pattern정규 표현식
  • Build-gradle에 아래와 같이 dependency를 추가해야 사용 가능

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

3. Validation 적용 및 예외 처리

1. Validation 적용

  • 변수 위 어노테이션으로 표시한다.
import jakarta.validation.constraints.*;
import lombok.Getter;

@Getter
public class ProductRequestDto {
    @NotBlank
    private String name;
    @Email
    private String email;
    @Positive(message = "양수만 가능합니다.")
    private int price;
    @Negative(message = "음수만 가능합니다.")
    private int discount;
    @Size(min=2, max=10)
    private String link;
    @Max(10)
    private int max;
    @Min(2)
    private int min;
}

2. Validation 예외 처리

  • BindingResult
    - 예외가 발생하면 BindingResult 객체에 오류에 대한 정보가 담긴다.
    - 파라미터로 BindingResult 객체를 받아 올 수 있다.
@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto, BindingResult bindingResult) {
    // Validation 예외처리
    List<FieldError> fieldErrors = bindingResult.getFieldErrors();
    if(fieldErrors.size() > 0) {
        for (FieldError fieldError : bindingResult.getFieldErrors()) {
            log.error(fieldError.getField() + " 필드 : " + fieldError.getDefaultMessage());
        }
        return "redirect:/api/user/signup";
    }

    userService.signup(requestDto);

    return "redirect:/api/user/login-page";
}
  • Field값에 대한 Validation 예외처리의 예시이다.
  • bindingResult.getFieldErrors()
    • 발생한 오류들에 대한 정보가 담긴 List<FieldError> 리스트를 가져온다.
  • 예외가 발생할 시, 예외에 대한 메세지를 Logging하고, signup페이지로 돌아간다.

출처

내일배움캠프 Spring Master

profile
밤낮없는개발자

0개의 댓글