Следует ли повторно использовать экземпляр ModelMapper, чтобы воспользоваться преимуществами кэшированных карт типов?

Я использую ModelMapper для прямого сопоставления объектов.

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.

Верен ли этот вывод?

Благодарность


person Avner    schedule 20.09.2016    source источник


Ответы (1)


Да. Об этом даже есть раздел в FAQ:

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

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

person gtonic    schedule 20.09.2016
comment
Спасибо! Как-то пропустил этот раздел. - person Avner; 20.09.2016