반응형
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 |