
유효성 검사 라이브러리 의존성 추가
<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 어노테이션을 통해 유효성 검사 수행