-
오류 : Map<String, Object>로 요청을 받아 Java의 reflection을 이용하여 동적으로 필드에 접근하여 Object를 대입하는 방식은 primitive와 String type에는 적용이 되었으나 User-Defined Class Type은 mapping되지 않았다
-
시도
- 시도 1 : Embeddable Class들을 Interface를 구현하게 하여 해당 Interface의 instance인지 판단
-> 동적으로 해당 필드명에 해당하는 객체를 생성해야 하는데 실패했고, 낭비이기도 함
- 시도 2,3,...,n-1 : ObjectMapper와 JSONObject를 사용하여 시도
-> Embeddable type인 경우는 key는 RequestParm으로 받고, value는 Embeddable Class의 필드로만 구성된 1차원(?) Json으로 받으면 objectMapper로 변환됨
문제 : primitive는 이렇게 하지 못함
- 기타 : reflection field로부터 객체 생성, java.lang.Class의 isPrimitive(), isAnnotationPresent(), isMemberClass()등의 다양한 시도
-
해결 : java.lang.Class의 isAnnotationPresent()로 성공
- isAnnotationPresent(Embeddable.class) 는 실패
- isAnnotationPresent(Embedded.class) 성공!
-
한계 : 값 검증을 하지 못함
- Request를 Dto로 받으면 Dto 필드에 선언한 annotaion으로 validation 할 수 있지만, 내가 구현한 방식으로는 단순히 Json을 대입해주는 한계가 있음
-
'오류'를 파악한 뒤 약 5시간은 쓴 것 같다. 사용한 메소드 모두 처음 사용하는 것이고, 처음 이런 것을 구현해봐서 많은 시간이 필요했다. Java 공부를 좀 더 해보고 싶다.