Spring Boot에서 사용가능한 Validation
| Annotaion | 내용 |
| @Size | 문자 길이 측정 |
| @NotNull | null불가 |
| @NotEmpty | null, ""불가 |
| @NotBlank | null, "", " " 불가 |
| @Past | 과거 날짜 |
| @PastOrPresent | 오늘이나 과거 날짜 |
| @Future | 미래 날짜 |
| @FutureOrPresent | 오늘이거나 미래 날짜 |
| @Pattern | 정규식 적용 |
| 이메일 형식 확인 | |
| @Max | 최대값 |
| @Min | 최소값 |
| @AssertTrue/ False | 별도 Logic 적용 |
| @Valid | 해당 Object Validation 실행 |
여러가지를 Spring Boot에서 제공을 해주지만 제공해주는 것 만으로는 부족할 때가 많다.
이럴 때 직접 Annotation을 만들어서 사용할 수 있다.
Spring Boot Validate Annotaion제작
Custom Validation을 만들기 위해서는 일단 Annotation을 만들어준다.
간단하게 날짜가 들어오고 이를 yyyyMMdd의 형식이 맞는지 검증하는 Date Validation을 만들어 보도록 하겠다.
@Constraint(validateBy={DateValidator.class})
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@RETENTION(RUNTIME)
public @interface DateValid {
String message() default "yyyyMMdd의 형식에 일치하지 않습니다."
Class<?> [] groups() default {};
Class<? extends Payload>[] payload() default {};
String pattern() default "yyyyMMdd";
}
그런다음
@Constraint(validateBy={DateValidator.class}) 에 있는 DateValidator를 만들어준다.
// ConstraintValidator를 상속 받고 제네릭에는 사용할 어노테이션과 들어오는 값을 사용한다.
public class DateValidator implements ConstraintValidator<DateValid, String> {
private String pattern;
@Override
public void initialize(DateValid constraintAnnotation) {
this.pattern = constraintAnnotation.pattern();
}
@Ovveride
// value는 들어온 값
pulic boolean isValid(String value, ConstraintValidatorContext context) {
try {
LocalDate.parse(value, DateTimeFormatter.ofPattern(this.pattern));
} catch(Exeption e) {
return false;
}
return true;
}
}
위와 같이 Annotation과 이를 검증할 Validator만 만들면 Custom Validation제작은 완료이다.
'Back-End > Spring Boot' 카테고리의 다른 글
| Spring Boot Filter란 (2) | 2024.06.16 |
|---|---|
| Spring Boot @RestControllerAdvice를 이용한 예외 처리 방법 (0) | 2024.06.09 |
| AOP (0) | 2024.06.08 |
| IoC와 DI (0) | 2024.06.08 |
| Spring Boot Validation 사용 (0) | 2024.06.07 |