2016-09-20 3 views
1

Я использую ModelMapper, чтобы делать прямые карты между объектами.Следует ли использовать экземпляр ModelMapper, чтобы воспользоваться кэшированными TypeMaps?

ModelMapper mapper = new ModelMapper(); 
// TypeMap created 
mapper.map(sourceObj, destObj); 

mapper = new ModelMapper(); 
// TypeMap is recreated 
mapper.map(sourceObj, destObj); 

я заметил в исходном коде, если TypeMap не существует между sourceObj и destObj, что он будет кэшировать TypeMap в getOrCreate методе.

Насколько я могу сказать, этот кэш привязан к экземпляру картографа, а это означает, что если у меня есть для отображения sourceObj к destObj во второй раз, используя новый экземпляр ModelMapper, что придется заново создать TypeMap.

Я предполагаю, что это довольно дорогостоящая операция, скажем, если я собираю коллекцию sourceObj до destObj. Это приводит меня к выводу, что я должен повторно использовать экземпляр ModelMapper.

Правильно ли это заключение?

спасибо

ответ

3

Да. Существует также раздел в FAQ об этом:

Должен ли я повторно использовать экземпляр ModelMapper?

Если вам не нужны разные сопоставления между одними и теми же типами, тогда лучше использовать один и тот же экземпляр ModelMapper. Если вы используете контейнер инъекции зависимостей, вы можете выполнить это, настроив ModelMapper как одноэлементный.

+0

Thanks! Как-то пропустил этот раздел. – Avner

 Смежные вопросы

  • Нет связанных вопросов^_^