我有一个关于PropertySourcesPlaceholderConfigurer
和@PropertySource
注释的简单问题。我有简单的bean类。我想从application.properties
和另一个test.properties
@Value
注释中注入属性。我在几个来源中读到@PropertySource
需要定义静态PropertySourcesPlaceholderConfigurer
bean。来自文档:
为了解决定义中的$ {...}占位符或 @Value注释使用PropertySource中的属性,必须使用 注册PropertySourcesPlaceholderConfigurer。有时候是这样的 在XML中使用时自动,但是 必须在使用时使用静态@Bean方法显式注册 @Configuration类。
但是对我来说没有这个豆子它可以正常工作。 Spring在某种程度上会在应用程序启动时自动配置PropertySourcesPlaceholderConfigurer
吗?这是我的简单示例(第一个属性来自application.properties
,第二个来自test.properties
):
@Configuration
@PropertySource("classpath:test.properties")
public class AppConfiguration {
@Value("${first.property}")
private String firstProp;
@Value("${second.property}")
private String secondProp;
@Bean
public TestModel getModel() {
TestModel model = new TestModel();
model.setFirstProperty(firstProp);
model.setSecondProperty(secondProp);
return model;
}
}
答案 0 :(得分:0)
静态PropertySourcesPlaceholderConfigurer
bean在PropertyPlaceholderAutoConfiguration
类丢失时自动注册,这似乎是在Spring Boot 1.5.0.RELEASE中引入的(因为之前没有它的在线javadoc)版本)。
有趣的是,Spring Boot 1.5 Release Notes中未提及此新的自动配置。