부트캠프/코트스테이츠 백엔드 코스
28~30회고
태태코
2023. 4. 16. 21:20
반응형
이전 회고에서 DTO의 필요성과 Service와의 연관성 에대해서 정리를 했고, 이제 DTO에 대해서 좀 더 정확하게 정리를 해보려 한다.
Spring Controller를 통해서 값이 들어올때 DTO로 값을 매핑할때 유효성을 검증 하는 코드를 넣을 수 있는데, 풀어서 작성하려면 코드의 가독성이 떨어지고, 코드가 길어지게 된다. 그렇기에 DTO를 정의할 때 annotaion을 통해 유효성을 맞춰서 넣을 수 있는데 몇가지만 예시로 보여주자면
@NotBlacnk @Email @pattern 같은 annotion을 통해 검증을 할 수 있고,
정규식을 여기서 설명하지는 않겠다.
다음으로는 유효성검사를 통해 annotaion을 만들 수 있는 데 만들 수 있는 것은
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = {NotSpaceValidator.class}) // (1)
public @interface NotSpace {
String message() default "공백이 아니어야 합니다"; // (2)
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
기본 @anntiaion 을 만들 때 기본 형식이고,
public class NotSpaceValidator implements ConstraintValidator<NotSpace, String> {
@Override
public void initialize(NotSpace constraintAnnotation) {
ConstraintValidator.super.initialize(constraintAnnotation);
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return value == null || StringUtils.hasText(value);
}
}
여기에 정규식을 추가해서 if문을 통해 처리를 하면 다양한 유효성 검증이 가능 한 것이다. 다음은 클래스 설계 및 구조 생성이다.
반응형