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 문 처리가 매우 까다로웠기 때문이다. 후후;; 금방 교훈으로 돌아온 것 같다. 계속적으로 생각해 봐야겠다!