[Spring]스프링 부트 유효성 검사

WOOK JONG KIM·2022년 11월 7일
0
post-thumbnail
post-custom-banner

유효성 검사 라이브러리 의존성 추가

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

유효성 검사는 각 계층으로 데이터에 넘어오는 시점에 해당 데이터를 검사

스프링부트에선 DTO 객체를 활용하기에 DTO 객체를 대상으로 수행하는 것이 일반적

ValidRequestDto 생성

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Builder
public class ValidRequestDto {

    @NotBlank
    String name;

    @Email
    String email;

    @Pattern(regexp = "01(?:0|1|[6-9])[.-]?(\\d{3}|\\d{4})[.-]?(\\d{4})$")
    String phoneNumber;

    @Min(value = 20) @Max(value=40)
    int age;

    @Size(min = 0, max = 40)
    String description;

    @Positive
    int count;

    @AssertTrue
    boolean booleanCheck;
}

유효성 검사 어노테이션

문자열 검증

  • @Null : Null 값만 허용
  • @NotNull : null을 허용하지 않음. "", " "는 허용
  • @NotEmpty : ""을 허용X, " " 허용
  • @NotBlank : null, "", " " 허용 X

최대,최솟값 검증

  • @DemicalMax(value = "$numberString") : numberString보다 작은 값 허용
  • @DemicalMin(value = "$numberString") : numberString보다 큰 값 허용
  • @Min(Value = $number) : $number 이상의 값 허용
  • @Max(Value = $number) : $number 이하의 값 허용

값의 범위 검증

  • @Positive : 양수를 허용
  • @PositiveOrZero : 0을 포함한 양수 허용
  • @Negative : 음수 허용
  • @NegativeOrZero : 0을 포함한 음수 허용

시간에 대한 검증

  • @Future : 현재보다 미래의 날짜를 허용
  • @FutureOrPresent : 현재를 포함한 미래 날짜 허용
  • @Past : 현재보다 과거 날짜 허용
  • @PastOrPresent : 현재 포함 과거 날짜 허용

이메일 검증

  • @Email : 이메일 형식 검사 , ""허용

자릿수 범위 검증

  • @Digits(integer = $number1, fraction = $number2) : $number1의 정수 자릿수와 $number2의 소수 자리수를 허용

Boolean 검증

  • @AssertTrue : true인지 체크, 널 값 체크 X
  • @AssertFalse : flase인지 체크, 널값 체크 X

문자열 길이 검증

  • @Size(min = $number1, max = $number2): $number1 이상 $number2 이하의 범위 허용

정규식 검증

  • @Pattern(regexp = $expression) : 정규식 검사

ValidRequestDto를 사용하는 컨트롤러 객체 생성

@RestController
@RequestMapping("/validation")
public class ValidationController {
    
    private final Logger LOGGER = LoggerFactory.getLogger(ValidationController.class);
    
    @PostMapping("/valid")
    public ResponseEntity<String> checkValidationByValid(
            @Valid @RequestBody ValidRequestDto validRequestDto){
        LOGGER.info(validRequestDto.toString());
        return ResponseEntity.status(HttpStatus.OK).body(validRequestDto.toString());
    }
}

@Valid 어노테이션을 통해 유효성 검사 수행

profile
Journey for Backend Developer
post-custom-banner

0개의 댓글