부트캠프/코트스테이츠 백엔드 코스

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문을 통해 처리를 하면 다양한 유효성 검증이 가능 한 것이다. 다음은 클래스 설계 및 구조  생성이다.

반응형

'부트캠프 > 코트스테이츠 백엔드 코스' 카테고리의 다른 글

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