加载目录中的所有推土机 xml 文件
Load all dozer xml files in a directory
在 Dozer 中,我们可以通过 setMappingFiles 函数将 XML 自定义映射文件注入 Dozer。
List myMappingFiles = new ArrayList();
myMappingFiles.add("dozerBeanMapping.xml");
myMappingFiles.add("someOtherDozerBeanMappings.xml"); DozerBeanMapper
mapper = new DozerBeanMapper();
mapper.setMappingFiles(myMappingFiles);
但我在资源类路径文件夹的目录中有 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;
}
我在 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;
}
在 Dozer 中,我们可以通过 setMappingFiles 函数将 XML 自定义映射文件注入 Dozer。
List myMappingFiles = new ArrayList();
myMappingFiles.add("dozerBeanMapping.xml");
myMappingFiles.add("someOtherDozerBeanMappings.xml"); DozerBeanMapper
mapper = new DozerBeanMapper();
mapper.setMappingFiles(myMappingFiles);
但我在资源类路径文件夹的目录中有 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;
}
我在 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;
}