我正在尝试使用PropertySourcesPlaceholderConfigurer在两个@Configuration类中解析我的属性:InfrastructureContextConfiguration
和WebMvcContextConfiguration
(两者都从同一文件中获取属性),看起来两者都需要自己的{{1 }}。
我可以为这两个课程使用一个PropertySourcesPlaceholderConfigurer
吗?
答案 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
我希望它有所帮助。