Replies: 1 comment
-
|
확실회 엔드포인트단의 열거체 검증 과정이 필요하다는 생각은 있었습니다 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
아래와 같은 JSON을 DTO 클래스로 파싱하려 합니다.
{ "name" : "lee", "gender" : "female" }gender의 경우 female, male 외엔 값 저장이 안되므로 이를 검증하기 위해 별도의Gender라는 열거체를 사용하기로 했습니다. (스프링 내부적으로 enum converter가 존재하므로)그러나, 이
Gender라는 열거체는 엔티티 필드에도 사용되어 도메인 패키지에 존재합니다.따라서 아래와 같이 DTO 필드 타입을
Gender로 한다면 엔티티-DTO 간 의존성이 더 강해지는 느낌이 듭니다.추가로 AOP를 통한 예외 핸들링시 DTO 열거체 필드, 나머지 필드로 구분하여 예외 처리를 한 경험이 있어 예외 처리를 통일하기 위해서라도 이 방법을 지양하고 싶었습니다.
그래서 별도의
@EnumValue라는 커스텀 검증 어노테이션을 만들어 기존 Bean Validation 어노테이션 (e.g.@NotNull,@Size)와 동일하게 예외 핸들링을 하려고 합니다!속성으로 파싱할 열거체 클래스, 예외 메시지, 대/소문자 구분 여부를 설정하여 해당 열거체 이름으로 파싱이 가능한지 여부를 검증합니다.
아래는
@EnumValue와 Resolver 클래스 내부 코드 입니다.EnumValue.java
EnumValidator.java
이 어노테이션을 활용하여 열거체 값을 검증하는건 어떠실까요?? 참고 링크
Beta Was this translation helpful? Give feedback.
All reactions