반응형
이전 회고에서 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문을 통해 처리를 하면 다양한 유효성 검증이 가능 한 것이다. 다음은 클래스 설계 및 구조 생성이다.
반응형
'부트캠프 > 코트스테이츠 백엔드 코스' 카테고리의 다른 글
32~34 (0) | 2023.04.30 |
---|---|
30~31 (0) | 2023.04.27 |
24~27차 회고 (1) | 2023.04.16 |
24일차 스프링 프레임워크 (0) | 2023.04.11 |
회고 20~23일차 (0) | 2023.03.29 |