개발일지
개발일지 24 - Validation
YIS0707
2023. 11. 20. 20:28
Validation 이란
예외 발생에 의한 오류를 예방하기 위해 거치는 데이터 검증과정.
Spring이 제공하는 Bean Validation을 사용할 수 있다.
사용법
build.gradle 라이브러리 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
어노테이션 추가
package com.sparta.springauth.dto;
import jakarta.validation.constraints.*;
import lombok.Getter;
@Getter
public class ProductRequestDto {
@NotBlank //null 불가
private String name;
@Email //e-mail 형식
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;
}
적용
@PostMapping("/validation")
@ResponseBody
public ProductRequestDto testValid(@RequestBody @Valid ProductRequestDto requestDto) {
return requestDto;
}
예외처리
@PostMapping("/user/signup")
public String signup(@Valid SignupRequestDto requestDto, BindingResult bindingResult) {
// Validation 예외처리, 예외 발생시 BindingResult 객체에 오류에 대한 정보 추가
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";
}