Spring Boot:PropertySourcesPlaceholderConfigurer未加载系统属性

时间:2016-01-19 00:06:38

标签: gradle spring-boot

我有一个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);
    } 
}
  • 我正在使用弹簧配置文件并基于活动配置文件,加载了正确的环境特定文件:utils-local.properties,utils-dev.properties等...
  • 通过application.properties(spring)设置配置文件时,例如spring.profiles.active = local all工作得很好,加载了正确的文件(utils-local.properties)。
  • 通过-D(gradle bootRun -Dspring.profiles.active = local)提供配置文件不会加载配置文件。我能够验证是否传递了系统属性(print systemProperties)

如果没有配置,我认为spring boot会注册一个PropertySourcesPlaceholderConfigurer。

1 个答案:

答案 0 :(得分:0)

春季靴子正式支持profile-specific properties using the naming convention application-{profile}.properties 所以你可以删除" classpath:util - $ {spring.profiles.active} .properties"并在类路径中添加application-local.properties,application-dev.properties等。