在spring配置文件中设置资源

阿利泽尔

我正在尝试在春季配置中配置推土机。当使用xml config时,就像

<bean class="org.dozer.spring.DozerBeanMapperFactoryBean">
    <property name="mappingFiles" value="classpath*:dozer/**/*.dzr.xml"/>
</bean>

我如何在配置文件中定义资源。我尝试使用,ctx.getResource()但无法访问Configuration类中的ApplicationContext。

我尝试了ContextRefreshedEvent并从那里添加资源,但是还是没有运气。(afterPropertiesSet已经被调用,添加的映射将无法工作)

public class ContextRefreshedEventBuilder extends ContextRefreshedEvent {
public ContextRefreshedEventBuilder(ApplicationContext ctx) {
    super(ctx);
    DozerBeanMapperFactoryBean mapper = ctx.getBean(DozerBeanMapperFactoryBean.class);
    try {
        mapper.setMappingFiles(ctx.getResources("classpath*:dozer/**/*.dzr.xml"));
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}

也尝试使用ClassPathResource,但找不到正确的方法

DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
mapper.setMappingFiles(new Resource[]{new ClassPathResource("classpath*:dozer/**/*.dzr.xml")});
return mapper;

如何添加ClassPathResource作为映射位置?

- -回答 - -

@Bean
public DozerBeanMapperFactoryBean configDozer() throws IOException {
    DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
    Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:dozer/**/*.dzr.xml");
    mapper.setMappingFiles(resources);
    return mapper;
}
然后马库斯

您需要使用ResourcePatternResolver将转换classpath*:dozer/**/*.dzr.xmlResource[]您可以使用2个主要选项。

  1. ApplicationContext注入您的配置类,将其强制转换为,ResourcePatternResolver然后使用getResources方法。Spring的默认应用程序上下文实现实现了该ResourcePatternResolver接口。
  2. 创建PathMatchingResourcePatternResolver带有或不带有前面提到的上下文的。
  3. ResourcePatternUtils一起使用ResourceLoader

使用ResourcePatternUtils

@Configuration
public class MyConfiguration {

    @Autowired
    private ResourceLoader resourceLoader;

    public DozerBeanMapperFactoryBean mapper() throws IOException {
        DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
        // ResourceLoader is allowed to be null when using the ResourceLoaderUtils.
        ResourcePatternResolver resolver = ResourceLoaderUtils.getResourcePatternResolver(resourceLoader);
        Resource[] mappingFiles = resolver.getResources("classpath*:dozer/**/*.dzr.xml");
        mapper.setMappingFiles(mappingFiles);
        return mapper;
    }
}

最后一种方法的优点是,您不必PathMatchingResourcePatternResolver局限于接口而只需绑定接口即可。实用程序类根据注入的ResourceLoader内容确定其作用。人们应该更喜欢这种加载资源的方式。

使用ApplicationContext

@Configuration
public class MyConfiguration {

    @Autowired
    private ApplicationContext context;

    public DozerBeanMapperFactoryBean mapper() throws IOException {
        DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
        Resource[] mappingFiles = ((ResourcePatternResolver) context).getResources("classpath*:dozer/**/*.dzr.xml");
        mapper.setMappingFiles(mappingFiles);
        return mapper;
    }
}

使用PathMatchingResourcePatternResolver

@Configuration
public class MyConfiguration {

    private PathMatchingPatternResolver resolver = new PathMatchingPatternResolver();

    public DozerBeanMapperFactoryBean mapper() throws IOException {
        DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
        Resource[] mappingFiles = resolver.getResources("classpath*:dozer/**/*.dzr.xml");
        mapper.setMappingFiles(mappingFiles);
        return mapper;
    }
}

或者,如果您想重用已经存在ResourceLoader的略有不同的版本:

@Configuration
public class MyConfiguration {

    @Autowired
    private ResourceLoader resourceLoader;

    public DozerBeanMapperFactoryBean mapper() throws IOException {
        DozerBeanMapperFactoryBean mapper = new DozerBeanMapperFactoryBean();
        Resource[] mappingFiles = new PathMatchingPatternResolver(resourceLoader).getResources("classpath*:dozer/**/*.dzr.xml");
        mapper.setMappingFiles(mappingFiles);
        return mapper;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

设置特定配置文件后不加载Spring bean

来自分类Dev

如何将Spring配置文件设置为包?

来自分类Dev

处理不同配置文件中的相同设置

来自分类Dev

在spring配置文件中设置资源

来自分类Dev

如何在mongodb配置文件中设置授权?

来自分类Dev

如何使用Maven配置文件设置Spring Active配置文件

来自分类Dev

在Maven配置文件中设置系统变量

来自分类Dev

无法正确读取配置文件中设置的$ _GLOBAL变量

来自分类Dev

如何在Spring配置文件中配置Hibernate

来自分类Dev

在Spring / Tomcat中,jndi查找引用哪个配置文件?

来自分类Dev

在spring boot @activeprofile注释中配置Maven配置文件

来自分类Dev

iOS 9.2的“常规设置”中缺少“配置文件”部分

来自分类Dev

在Spring Cloud中的bootstrap.yml上设置配置文件以针对不同的配置服务器

来自分类Dev

Spring Batch:Java配置文件中的并行步骤执行

来自分类Dev

在Spring-boot中设置默认的活动配置文件

来自分类Dev

在Siebel中神奇地设置了配置文件属性

来自分类Dev

如何在Vertx中设置类似于Spring Boot的活动配置文件

来自分类Dev

在Thunderbird中设置默认配置文件

来自分类Dev

Spring配置文件中的Liquibase文件路径

来自分类Dev

iOS设置配置文件

来自分类Dev

在游戏过程中强制设置能量配置文件?

来自分类Dev

在Spring MVC中从环境变量设置活动配置文件

来自分类Dev

在AWS OpsWorks / Chef for Rails中设置配置文件

来自分类Dev

MIME设置的配置文件

来自分类Dev

从Spring配置文件中删除其他配置文件

来自分类Dev

WCF channelfactory与配置文件中的设置?

来自分类Dev

配置文件的 Git 设置

来自分类Dev

根据 Spring 配置文件属性设置字段

来自分类Dev

在 PowerShell 配置文件中设置-AWSProxy

Related 相关文章

  1. 1

    设置特定配置文件后不加载Spring bean

  2. 2

    如何将Spring配置文件设置为包?

  3. 3

    处理不同配置文件中的相同设置

  4. 4

    在spring配置文件中设置资源

  5. 5

    如何在mongodb配置文件中设置授权?

  6. 6

    如何使用Maven配置文件设置Spring Active配置文件

  7. 7

    在Maven配置文件中设置系统变量

  8. 8

    无法正确读取配置文件中设置的$ _GLOBAL变量

  9. 9

    如何在Spring配置文件中配置Hibernate

  10. 10

    在Spring / Tomcat中,jndi查找引用哪个配置文件?

  11. 11

    在spring boot @activeprofile注释中配置Maven配置文件

  12. 12

    iOS 9.2的“常规设置”中缺少“配置文件”部分

  13. 13

    在Spring Cloud中的bootstrap.yml上设置配置文件以针对不同的配置服务器

  14. 14

    Spring Batch:Java配置文件中的并行步骤执行

  15. 15

    在Spring-boot中设置默认的活动配置文件

  16. 16

    在Siebel中神奇地设置了配置文件属性

  17. 17

    如何在Vertx中设置类似于Spring Boot的活动配置文件

  18. 18

    在Thunderbird中设置默认配置文件

  19. 19

    Spring配置文件中的Liquibase文件路径

  20. 20

    iOS设置配置文件

  21. 21

    在游戏过程中强制设置能量配置文件?

  22. 22

    在Spring MVC中从环境变量设置活动配置文件

  23. 23

    在AWS OpsWorks / Chef for Rails中设置配置文件

  24. 24

    MIME设置的配置文件

  25. 25

    从Spring配置文件中删除其他配置文件

  26. 26

    WCF channelfactory与配置文件中的设置?

  27. 27

    配置文件的 Git 设置

  28. 28

    根据 Spring 配置文件属性设置字段

  29. 29

    在 PowerShell 配置文件中设置-AWSProxy

热门标签

归档