带有@ProperySource的Spring启动PropertySourcesPlaceHolderConfigurer

时间:2018-03-29 16:33:36

标签: java spring spring-boot

我有一个关于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;
    }
}

1 个答案:

答案 0 :(得分:0)

静态PropertySourcesPlaceholderConfigurer bean在PropertyPlaceholderAutoConfiguration类丢失时自动注册,这似乎是在Spring Boot 1.5.0.RELEASE中引入的(因为之前没有它的在线javadoc)版本)。

有趣的是,Spring Boot 1.5 Release Notes中未提及此新的自动配置。