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";
}
'개발일지' 카테고리의 다른 글
20231127 - redis 사용법 (0) | 2023.11.27 |
---|---|
개발일지 25 - Jwt 검증 중 발생한 오류 (0) | 2023.11.22 |
개발일지 23 - @PathVariable, @RequestBody (0) | 2023.11.16 |
개발일지 22 - 현재까지 자주 사용하고 있는 어노테이션 (0) | 2023.11.15 |
개발일지 21 - JPA (0) | 2023.11.14 |