본문 바로가기

개발일지

개발일지 24 - Validation

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";
}