Spring Boot:PropertySourcesPlaceholderConfigurer 未加载系统属性

Posted

技术标签:

【中文标题】Spring Boot:PropertySourcesPlaceholderConfigurer 未加载系统属性【英文标题】:Spring Boot : PropertySourcesPlaceholderConfigurer is not loading system properties 【发布时间】:2016-04-24 07:28:15 【问题描述】:

我有一个 Spring Boot 应用程序如下:

@SpringBootApplication
@PropertySource(ignoreResourceNotFound=true,value="classpath:application.properties","classpath:util-$spring.profiles.active.properties")
@ComponentScan("com.jmarts")
@EnableTransactionManagement
public class Application extends SpringBootServletInitializer 

    public static void main(String[] args) 
        SpringApplication.run(Application.class, args);
    

    @Override
    protected SpringApplicationBuilderconfigure(SpringApplicationBuilder application) 
        return application.sources(Application.class);
     

我正在使用 spring 配置文件并根据活动配置文件加载正确的环境特定文件:utils-local.properties、utils-dev.properties 等... 当通过 application.properties (spring) 设置配置文件时,例如spring.profiles.active=local 一切正常,加载了正确的文件 (utils-local.properties)。 通过 -D (gradle bootRun -Dspring.profiles.active=local) 提供配置文件不会加载配置文件。我能够验证系统属性是否已通过(打印 systemProperties)

如果没有配置,我假设 spring boot 将注册一个 PropertySourcesPlaceholderConfigurer。

【问题讨论】:

【参考方案1】:

spring boot 正式支持profile-specific properties using the naming convention application-profile.properties. 所以你可以删除“classpath:util-$spring.profiles.active.properties”并在类路径中添加application-local.properties、application-dev.properties等。

【讨论】:

以上是关于Spring Boot:PropertySourcesPlaceholderConfigurer 未加载系统属性的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 2Spring Boot CLI

为啥 Spring Boot 应用程序 pom 同时需要 spring-boot-starter-parent 和 spring-boot-starter-web?

《02.Spring Boot连载:Spring Boot实战.Spring Boot核心原理剖析》

spring-boot-quartz, 依赖spring-boot-parent

spring-boot系列:初试spring-boot

Spring Boot:Spring Boot启动原理分析