24.09.24

윤지현·2024년 9월 25일

TIL

목록 보기
66/75

01. Validation


  • Validation이란?
  • 특히나 Java는 null 값에 대한 접근에 대해 NullPointerException 오류가 발행하기 때문에 이러한 부분을 예방하기 위해 Validation 즉, 검증 과정이 필요
  • Spring에서는 null 확인 뿐 아니라 문자의 길이 측정과 같은 다른 검증 과정도 쉽게 처리할 수 있도록 Bean Validation 제공

  • Bean Validation
    • 간편하게 사용할 수 있는 여러 애너테이션을 제공

      애너테이션설명
      @NotNullnull 불가
      @NotEmptynull, “” 불가
      @NotBlanknull, “”. “ “ 불가
      @Size문자 길이 측정
      @Max최대값
      @Min최소값
      @Positive양수
      @Negative음수
      @EmailE-mail 형식
      @Pattern정규 표현식

  • Validation 적용
@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;
}
  • @Valid
    • Bean Validation을 적용한 해당 Object validation 실행
@PostMapping("/validation")
@ResponseBody
public ProductRequestDto testValid(@RequestBody @Valid ProductRequestDto requestDto) {
    return requestDto;
}

02. Validation 예외처리

  • Validation 예외처리
    • 회원가입 진행 시 데이터 검증 시 오류가 발생했을 때 로그인 페이지가 아니라 회원가입 페이지로 이동 하려면 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";
}
profile
첫 시작

0개의 댓글