我使用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);
}
}有什么建议吗?
发布于 2019-08-03 02:34:21
Commons Configuration提供了一种执行custom interpolation的方法。This answer展示了一个示例。您的Lookup实现将需要解析前缀之后的所有内容,然后执行查找并提供默认值。
https://stackoverflow.com/questions/56343575
复制相似问题