인프런 커뮤니티 질문&답변

정윤성님의 프로필 이미지

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Catalogs Microservice - 개요

ModelMapper 질문

작성

·

525

0

이전 UserService도 마찬가지로 ModelMapper를 계속 새로 생성하시는 이유가있나요 ?? Bean으로 만들어서 가져다 쓰는방식이 어떠한 결함을 가지고있는건가요 ??

답변 2

1

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다. 

말씀하신 것과 같이 빈으로 등록해서 사용해도 상관없지만, ModelMapper의 사용 용도가 사용하려는 어떠한 빈의 값을 다른 빈으로 전환(또는 변경)하는 것이기 때문에, 해당 빈의 상태를 새롭게 저장하기 위해 매번 인스턴스를 생성하여 반환하려고 했습니다. 빈으로 등록하여 사용했을 때의 문제점이라기 보다는 Spring 에서 빈의 상태가 기본적으로 싱글톤이기 때문에, 데이터의 상태가 공유될 수도 있다고 생각됩니다. 물론 빈의 Scope을 변경해서 관리하셔도 되기 하지만, 필요시 생성해서 반환하는게 낫다고 생각됩니다.

관련내용으로 다음 게시글도 함께 참고해 보시면 좋을 것 같습니다. 

https://www.inflearn.com/questions/224304

감사합니다. 

0

안녕하세요 부족한 실력이오나 추가 의견 드리면 Mapstruct처럼 static object를 이용하여 Complie시점에 entity변환 instance를 만들고 싱글톤으로 이용하는 라이브러리가 효율적이지 않나 싶습니다. 강사님 말씀대로 modedlmapper는 jvm동작시점에 메모리를 사용하여 mapper객체를 만듦으로 인해 요청 thread가 올때마다 계속 instance를 생성해야 하는 문제가 있어서 저도 사용하기 불편하더라고요..대세는 mapstruct로(아님 dsl이나)