java - 替换 application.properties 以外的 Spring 属性文件中的环境变量

标签 java spring spring-boot properties-file

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

但是,当我通过 PropertiesFactoryBean 文件为 Quartz 配置提供 quartz.properties 时,这种解析不会发生。

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

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

最佳答案

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

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

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

关于java - 替换 application.properties 以外的 Spring 属性文件中的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52651006/

相关文章:

java - jboss 4.2.2 到 5.0.1 迁移 :needed jboss client jar files

javascript - Javascript 将 json 文件中的数据存储到 map 中?

java - 使用 Atomikos 在 Tomcat 服务器中正确设置 JTA 事务管理器

java - 多个 DefaultMessageListenerContainer 提供单个 TaskExecutor/ThreadPool(公平地)

java - 如何使用 Maven 构建 ExtJS 项目

java - Android - 创建进度对话框

java - Spring的值注释在构造函数参数中不起作用

java - 无法访问属性

java - 如何在执行集成测试时禁用Spring Cloud ZooKeeper

java - B 类构造函数的参数 0 需要 A 类类型的 bean,但无法找到