【发布时间】:2019-10-14 01:30:40
【问题描述】:
我正在使用org.apache.commons:commons-configuration2:2.5 从配置文件中读取配置参数。在我的application.properties 中,我想为环境变量指定默认值,以防其中一个尚未设置,例如像这样(类似于 Spring):
idp.username=${env:IDP_USERNAME:defaultUsername}
但是,虽然设置 env 变量可以正常工作,但指定这样的默认值是行不通的。不幸的是,我在commons-configuration2 文档中找不到与此相关的任何内容。如果不明确检查 Java 代码中的缺失值,这是否可行? Spring Boot 是否为此使用了某个我也可以使用的库?我不想仅仅为了拥有这种配置而使用 Spring 框架来膨胀我的简单应用程序。
我目前正在使用的简化代码示例(在这里,我显然可以检查我检索到的每个属性并将其替换为默认值,但我想避免这种情况并直接在配置文件中处理它):
private void loadConfigFile() {
logger.info("Attempting to load `application.properties`...");
Configurations configBuilder = new Configurations();
try {
Configuration props = configBuilder.properties(new File("application.properties"));
// application config
this.conf = new Config();
this.conf.setAPIEndpoint(props.getString("api.endpoint"));
this.conf.setMaxConnections(props.getInt("api.maxConnections"));
...
logger.info("Config successfully loaded!");
} catch (Exception e) {
logger.error("Could not load `application.properties`: {}", e.getMessage());
System.exit(1);
}
}
有什么建议吗?
【问题讨论】:
-
你为什么要阅读带有公共配置的application.properties?这可以用 Spring Boot 轻松完成吗?
-
如问题中所述,我不在此特定应用程序中使用 Spring Boot,并希望避免使用它。为方便起见,该文件仅命名为
application.properties。
标签: java apache-commons-config