사용자 정의 검증 Annotation 코드 중복

엉금엉금·2022년 6월 14일
0

오늘 만난 문제

목록 보기
4/24

API Controller에 Bean Validation을 진행하는 중에 사용자 정의 Validation Annotation까지 만들게 되었다.

작동이 잘하는 것은 맞지만 먼가... 아쉬운 기분?

그 이유는 아래 보이는 코드와 같다.

public class AValidator implements ConstraintValidator<AUnit, Integer> {
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {
        return value % 500 == 0;
    }
}
public class BValidator implements ConstraintValidator<BUnit, Integer> {
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {
        return value % 100 == 0;
    }
}

코드의 차이는 100과 500의 차이? 기능은 정상적으로 작동한다. 하지만...
위 기능을 위해서 인터페이스 2개, 클래스 2개 총 4개의 파일을 만들어야 한다. 지금의 관점에서는 무엇이 좋은지 솔직히 잘 모르겠다 그래도 나는 이러한 중복을 피하고 싶은 마음에 아래와 같이 인터페이스와 클래스를 반으로 줄였다.

public class CValidator implements ConstraintValidator<CUnit, Integer> {
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {

        if (value % 500 == 0) {
            return true;
        }

        return value % 100 == 0;
    }
}

위 코드 또한 기존 코드와 같이 정상적으로 작동한다. 해당 Validation Annotation을 사용하는 곳 또한 하나의 Annotation만 보인다. 지금은 단순하게 가려고 한다. 행여나 지금의 변경이 나중에 어떤 영향을 미친다면 그때가 그때에 좋은 교훈이 되었으면 한다. 하하하~


하하하 역시나 문제가 있었다!!! 올바르게 수정합시다!!!

원래 처리하던 코드가 파일이 많아져 지저분할 수도 있으나 결론적으로는 나누어져 있는 것이

훨씬 좋다는 판단이 들어서 다시 원복 했다. 이유는 if 문 처리가 매우 까다로웠기 때문이다. 후후;; 금방 교훈으로 돌아온 것 같다. 계속적으로 생각해 봐야겠다!

profile
step by step

0개의 댓글