Я сделал это, используя Java 8 и dozer 5.5. Вам не нужны файлы XML для сопоставления. Вы можете сделать это на Java.
Вам не нужно дополнительное сопоставление для списков, вам нужно только
вам нужно добавить список как поле в отображении
. См. пример конфигурации компонента ниже.
Весенний класс конфигурации
@Configuration
public class Config {
@Bean
public DozerBeanMapper dozerBeanMapper() throws Exception {
DozerBeanMapper mapper = new DozerBeanMapper();
mapper.addMapping( new BeanMappingBuilder() {
@Override
protected void configure() {
mapping(Answer.class, AnswerDTO.class);
mapping(QuestionAndAnswer.class, QuestionAndAnswerDTO.class).fields("answers", "answers");
}
});
return mapper;
}
}
//Класс ответа и классы AnswerDTO имеют одинаковые атрибуты
public class AnswerDTO {
public AnswerDTO() {
super();
}
protected int id;
protected String value;
//setters and getters
}
//В классе QuestionAndAnswerDTO есть список ответов
public class QuestionAndAnswerDTO {
protected String question;
protected List<AnswerDTO> answers;
//setters and getters
}
//ДОПУСТИМ, чтобы класс QuestionAndAnswer имел такие же поля, как и QuestionAndAnswerDTO
// Затем, чтобы использовать маппер в вашем коде, автоподключите его
@Autowired
private DozerBeanMapper dozerBeanMapper;
// in your method
QuestionAndAnswerDTO questionAndAnswerDTO =
dozerBeanMapper.map(questionAndAnswer, QuestionAndAnswerDTO.class);
Надеюсь, это поможет кому-то следовать подходу Java вместо XML.
person
Vins
schedule
18.09.2017