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