java - 替换除 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 方法可以在不使用外部库的情况下替换属性文件中的这些环境变量?
解决方案
您可以声明一个新类来提供属性(用@Configuration 注释),还可以提及@PropertySource
@Configuration
@PropertySource("classpath:quartz.properties")
public class QuartzConfig {
//...
}
通过这种方式,您的 Spring Boot 应用程序可以读取任意数量的属性文件。
推荐阅读
- spring-boot - 容器化 Springboot 应用程序 - 从 JAR 中加载嵌入式密钥库 (.jks/.p12)
- android - 在 Android 4.3.1 中使用 FloatingActionButton 时无法在 Google Material Dependency 中找到资源
- r - 将结果写回 lastrow + 1 到新创建的数据帧
- java - 如何强制 JavaFX XYChart 的布局更新
- android - Canvas drawText(字体)导入Times字体?
- node.js - EACCES:权限被拒绝在 Mac 上使用 npm 安装 NWjs
- vba - 判断树节点是否存在
- c - 如何在 macOS 上使用 GDB 调试器?
- angular - 如何使用 Angular 从 twitter api 读取属性
- keras - 如何访问包含预训练模型的自定义模型的即时激活?