首页 > 解决方案 > 替换除 application.properties 之外的 Spring 属性文件中的环境变量

问题描述

Spring Boot 将使用相应的环境变量自动解析文件中的任何${ENV}占位符。application.properties

然而,当我提供一个用于 Quartz 配置的文件quartz.properties时,这种分辨率不会发生。PropertiesFactoryBean

@Bean
public Properties getQuartzProperties() throws IOException {
    PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
    propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
    propertiesFactoryBean.afterPropertiesSet();
    return propertiesFactoryBean.getObject();
}

是否有任何 Spring 方法可以在不使用外部库的情况下替换属性文件中的这些环境变量?

标签: javaspringspring-bootproperties-file

解决方案


您可以声明一个新类来提供属性(用@Configuration 注释),还可以提及@PropertySource

@Configuration
@PropertySource("classpath:quartz.properties")
public class QuartzConfig {
      //...
}

通过这种方式,您的 Spring Boot 应用程序可以读取任意数量的属性文件。


推荐阅读