[Kotlin] ModelMapper 정리

Jae Eon·2021년 9월 17일
1

Kotlin 공부

목록 보기
2/6
post-thumbnail

회사에서 ModelMapper사용중 기본생성자 초기화 에러를 마주쳤고 해결하며 배운 내용을 정리한 포스트

🍋 ModelMapper란?

MapStruct와 같이 객체 간의 변환을 위해 사용되는 라이브러리이며, MapStruct와 다른 점은 Runtime 시점에 Reflection API를 사용하여 객체를 매핑한다는 것이다.


🍎 기본생성자 에러가 발생한이유

ModelMapper는 Reflection API를 사용하고 Reflection은 생성자의 인자 정보를 가지고 객체를 생성한다.
하지만 dataClass에 기본생성자가 존재하지 않아서 Runtime때 Reflection이 인자 정보를 가지고 오지 못해 에러가 발생했다.


🍊 기본생성자 에러 해결

Kotlin의 noArg 플러그인을 사용하여 기본생성자가 자동으로 생성되게 만들어 해결


🍑 ModelMapper 사용 방법

추후작성


🍓 ModelMapper 장・단점

장점

  • 간결한 코드 작성이 가능하다.
  • 일반적으로 필드 변경 사항에 대해서 고려하지 않아도 된다.

단점

  • Refliection API를 사용하기에 다른 방식보다 상대적으로 성능이 좋지 않다.
  • 바이트코드 생성 방식을 이용하기에 문제 원인 발견과 디버깅이 어렵다. 특정 필드의 변경으로 인한 문제가 발생하였을 때 이를 찾아내기 힘들다.
  • 일반적으로 setter를 사용한다. (불변 객체는 사용 힘듬) 별도로 TypeMap과 provider를 정의하여 생성자를 이용해 매핑할 수 있도록 변경할 수는 있다.
profile
🖋정리를 안하면 잊어버린다.👣한 발자국씩 가보자!

0개의 댓글