我是否需要为每个@Configuration类使用PropertySourcesPlaceholderConfigurer?

时间:2015-10-12 14:17:38

标签: spring spring-mvc properties

我正在尝试使用PropertySourcesPlaceholderConfigurer在两个@Configuration类中解析我的属性:InfrastructureContextConfigurationWebMvcContextConfiguration(两者都从同一文件中获取属性),看起来两者都需要自己的{{1 }}。

我可以为这两个课程使用一个PropertySourcesPlaceholderConfigurer吗?

1 个答案:

答案 0 :(得分:1)

在具有no-xml配置的Spring应用程序中,必须在所有应用程序上下文中注册 static PropertySourcesPlaceholderConfigurer bean。

要注册PropertySourcesPlaceholderConfigurer,只需将相同类型的静态bean与您想要访问的属性源一起添加到配置中。要导入多个属性源,请使用@PropertySources批注(在Java 8之前)或多个@PropertySource批注(Java 8)。

@Configuration
@PropertySource("classpath:application.properties")
@ComponentScan
class ApplicationConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer    placeholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

}

我在最近的博文中提到了这一点:http://blog.codeleak.pl/2015/09/placeholders-support-in-value.html

您不需要在每个@Configuration类中注册PropertySourcesPlaceholderConfigurer - 在每个上下文中都需要它 - 上下文可以使用多个@Configuration类。你可以在Spring MVC Quick Start Archetype中找到一个例子: https://github.com/kolorobot/spring-mvc-quickstart-archetype/tree/master/src/main/resources/archetype-resources/src/main/java/config

我希望它有所帮助。