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 |