IT story/java

[수동 validateor] Annotation validator

자랑이다 2022. 9. 26. 15:13
728x90
반응형

Spring에서 dto 의 valudation 체크시

Annotation validator 가 자동으로 잡히도록 설정해두거나

Project 자체의 validator를 공통부분에서 만들어서 처리한다. 

지금까지 내가 수행했던 프로젝트에서 저 두 방식만을 경험해보았다. 

 

공통 처리되는 부분 외 

프로젝트 특성상 몇몇 경우 예외 validation 처리가 필요한 경우. 

dto 자체에 동일하게 @NotNull, @Email 등등의 annotation 사용시

수동으로 annotation 걸린 객체에 valudation 처리를 하는 방법이다. 

 

public void dtoAnnotationValidCheck( Object obj ) throw Exception {
     for( Field field : obj.getClass().getDeclaredFields()){
        String fieldNm = "[" + field.getName() + "]";
        String fieldVal = field.get(obj).toString();
        field.setAccessible(true);

        if( field.getAnnotation(NotNull.class) != null ) {   //@NotNull
           Validator.throwIfNull(field.get(obj), fieldNm);
        }

       if( field.get(obj) != null ) {   // @max(10)
           Validator.throwIfGreaterThan(fieldVal.length(), field.getAnnotation(Size.class).max() ,fieldNm);
        }

       if( field.getAnnotation(Email.class) != null ) {   //@Email
           String pattern = "^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$";
           Validator.throwIfNotMatches(fieldVal, pattern, fieldNm);
        }
}

 

위 코드로 valudation check 되는것은 확인했으나

관련 내용이 삭제되면서 실제로 사용은 안함. 

** 핸드폰으로 작성한 글이다보니 오타가 있을 수 있음. 

728x90

'IT story > java' 카테고리의 다른 글

[ lambda ] array to list  (0) 2022.02.08
[JPA] @LastModifiedDate 자동 저장 안될 때.  (0) 2021.07.19