ModelMapper конвертер для вложенных объектов

139
22 сентября 2019, 08:50

Конфигурация маппера

@Component
public class ModelMapperFactoryBean implements FactoryBean<ModelMapper> {
    @Autowired
    private Collection<MapperConfigurer> configurers;
    @Override
    public ModelMapper getObject() {
        final ModelMapper modelMapper = new ModelMapper();
        if (!CollectionUtils.isEmpty(configurers)) {
            configurers.forEach(c -> c.configure(modelMapper));
        }
        return modelMapper;
    }      
}

Пример конвертера

 @Component
public class ModelConverter implements MapperConfigurer {
    @Override
    public void configure(ModelMapper modelMapper) {
        modelMapper.addConverter(new AbstractConverter<ModelEntity, Model>() {
            @Override
            protected Model convert(ModelEntity source) {
                return Model.builder()
                        .id(source.getId())
                        .name(source.getName())
                        .serverConfig(modelMapper.map(source.getServerConfig(), ServerProcessConfig.class))
                        .build();
            }
        });
    }
}

Spring приложение, в котором ипользую маппер. Для каждых сущностей есть свой конвертер. Есть для Model. есть и для ServerProcessConfig.

При конвертации model я вызывают modelmapper и вызываю у него метод map чтобы сконвертировать вложенный объект, для которого тоже есть реализованный конвертер.

Соответственно, я ожидаю, что маппер будет использоваться его. Однако, очевидно маппер его не использвует(брекпоинт не срабатывает) а пробует преобразовать объект так, судя по всему, просто по сопостовлению полей.

Если попробовать просто (не в качестве вложенного объекта) преобразовать ServerProcessConfig, то реализованный для этого конвертер сработает как положенно.

Почему маппер не использует другие конверторы для вложенных объктов?

READ ALSO
Как я могу использовать массив из файлов ресурсов java [закрыт]

Как я могу использовать массив из файлов ресурсов java [закрыт]

У меня есть большой массив, больше 64кб, я хочу закинуть его в ресурсы и юзать оттуда, как мне это сделать? Спасибо!

126
Маппинг запросов в SpringBoot 2+

Маппинг запросов в SpringBoot 2+

В проекте (SpringBoot 2+, thymeleaf) есть простой рест-контролер вида:

126
Как анимировать рукописный текст на веб-странице с помощью SVG

Как анимировать рукописный текст на веб-странице с помощью SVG

Я пытаюсь анимировать текст, который я создал и сохранил как SVGДо сих пор мне удавалось только оживить stroke, но это не то, что я хочу получить

137