在Dozer中,我们可以通过 setMappingFiles 函数将XML自定义映射文件注入Dozer。
List myMappingFiles = new ArrayList();
myMappingFiles.add("dozerBeanMapping.xml");
myMappingFiles.add("someOtherDozerBeanMappings.xml"); DozerBeanMapper
mapper = new DozerBeanMapper();
mapper.setMappingFiles(myMappingFiles);
但我在资源Classpath文件夹中的目录中有100个XML文件。 什么是将它们注入Dozer的最佳解决方案?
我在spring5尝试这个:
@Value("classpath*:dozer/*.xml")
private Resource[] resources;
@Bean(name = "org.dozer.Mapper")
public DozerBeanMapper dozerBean() {
DozerBeanMapper dozerBean = new DozerBeanMapper();
dozerBean.setMappingFiles(resources); //this is wrong
return dozerBean;
}
答案 0 :(得分:0)
我没有在DozerBeanMapper
中确定提供这种方式的方法。
作为解决方法:将资源映射到List<String>
,您可以使用DozerBeanMapper.setMappingFiles(List<String> mappingFileUrls)
请注意,您可以注入List<Resources>
而不是Resource[]
更方便。
@Value("classpath*:dozer/*.xml")
private List<Resources> resources;
@Bean(name = "org.dozer.Mapper")
public DozerBeanMapper dozerBean() {
List<String> xmlString =
resources.stream()
.map(t -> {
try {
return t.getFile().toURI().toURL().toString();
}
catch (IOException e) {
throw new RuntimeException(e);
}
})
.collect(Collectors.toList());
DozerBeanMapper dozerBean = new DozerBeanMapper();
dozerBean.setMappingFiles(xmlString );
return dozerBean;
}