Вы можете попробовать использовать простую зависимость отображения, такую как MapStruct , в которой есть функции, автоматически отображающие между двумя Java-компонентами. Это особенно полезно в тех случаях, когда для преобразования одного из них требуется много кода платформы. ДТО моделировать и наоборот.
Дополнительным преимуществом является то, что Mapstruct имеет встроенную поддержку пружины и Dependency Injection.
Необходимая зависимость:
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.3.0.Beta2</version>
</dependency>
Также позаботьтесь о том, чтобы включить плагин mapstruct-processor
в pom.
Тогда вы можете предоставить интерфейс, подобный (не точный, поскольку я не знаю ваш класс и поля dto):
@Mapper public interface OutputMapper {
@Mappings({
@Mapping(target="id", source="input.id"),
@Mapping(target="name", source="input.name")
})
EmployeeDTO inputToOutputDTO(Input entity);
@Mappings({
@Mapping(target="id", source="dto.id"),
@Mapping(target="name", source="dto.name")
})
Employee outputDTOtoInput(OutputDTO dto); }
Но для вашего случая использования, я думаю, вам нужно будет использовать универсальные преобразователи типов. Вам нужно будет использовать java-шаблоны для определения универсальных конвертеров для каждого типа объекта. Один из примеров: i found .