Я сделал это, используя 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.