Вполне нормально настроить логику отображения в конфигурации компонента ModelMapper
.Сопоставление является актуальной задачей этого класса, поэтому его следует настраивать при его создании.
Тем не менее, я предпочитаю создавать несколько выделенных определений сопоставления, по одному для каждого типа или группы связанных типов.
Делая это таким образом, вы отделяете аспект конфигурации отдельно от фактического использования преобразователя в контроллерах - без создания большой кучи несвязанного кода конфигурации сопоставления в одном классе.Действительно, настройка сопоставителя в каждом контроллере будет нарушать такие принципы, как DRY (не повторяйте себя) и SoC (разделение интересов).
В вашем случае (singleton ModelMapper
) вы можете создать @Configuration
-аннотированные классы для каждого типа или группы типов, которые вы хотите отобразить.Внутри этого класса вы получите ModelMapper
и добавите сопоставления типов.Добавьте свой код конфигурации либо в
- *
ModelMapper
-получающий конструктор, либо в @PostConstruct
-аннотированный метод, который обращается к атрибуту @Autowired
ModelMapper
.
Я еще не использовал ModelMapper
, но после того, как заглянул в его кодовую базу, я бы предположил, что если вы будете следовать исходному подходу, использование памяти не увеличится, но вы обнаружите исключения, связанные с дублирующимися отображениями.