관리 메뉴

나만의공간

ModelMaper Package 오류 대응 본문

IT/JAVA

ModelMaper Package 오류 대응

밥알이 2021. 12. 18. 09:02

ModelMapper 사용으로 인한 오류 대응

ModelMapper를 이용하여 DTO or Entity or Domain등에 Model 매핑을 잘 사용하고 있었다.
QA환경에서 지속적인 테스트를 수행하고, 아무 문제 없이 잘 되고 있었다.

곧 PRD환경 반영을 위해 PRD에서 Business 오류가 없는지 30시간 정도 수행을 했는데, 제니퍼에서 OOM(Out Of Memory)가 발생하고 해당 Thread는 종료 되버리는 현상이 발생하기 시작 ㅜ.ㅜ

Out Of Memory 발생

오류 메시지는 아래와 같다.
(처음에는 Configure Error문구가 보여 환경설정 문제인지 알고 한참 찾았음)

trace: org.modelmapper.ConfigurationException: ModelMapper configuration errors:

1) Failed to configure mappings

1 error
    at org.modelmapper.internal.Errors.throwConfigurationExceptionIfErrorsExist(Errors.java:241)
    at org.modelmapper.internal.ExplicitMappingBuilder.build(ExplicitMappingBuilder.java:252)
    at org.modelmapper.internal.ExplicitMappingBuilder.build(ExplicitMappingBuilder.java:104)
    at org.modelmapper.internal.TypeMapImpl.addMappings(TypeMapImpl.java:92)
    at org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:124)
    at org.modelmapper.ModelMapper.addMappings(ModelMapper.java:113)

구글 검색으로 이것저것 찾아 보니 ModelMapper를 사용할려면 싱글톤으로 구성하여 사용하라고 한다.

오픈이 바로 다가와 ModelMapper를 싱글톤으로 변경은 못하고 원천 방식은 get/set 방식으로 변경하여 Memory Leak을 해결 하였다.
(get/set으로 변경해도 Memory Leak이 추가로 발생하였음 ㅠㅠ)

ModelMapper 보다는 BeanUtils가 쓰기 편했으나 장단점이 존재함.

Object Mapper 종류

Model Mapper 말고 다른 종류에 Objet Mapper가 있는지 찾아 보았다.

-. Object Mapper
-. Orika
-. Model Mapper
-. Map Struct
-. BeanUtils 

위 종류는 따로 추가 정리를 해 봐야 겠다.

Comments