将所有dozer xml文件加载到目录中

时间:2018-01-31 19:08:40

标签: java file directory dozer

在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;
  }

1 个答案:

答案 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;
}