gpt4 book ai didi

java - 有没有办法使用 apache-commons 为属性文件中的环境变量提供默认值?

转载 作者:行者123 更新时间:2023-11-30 05:37:16 25 4
gpt4 key购买 nike

我正在使用 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);
}
}

有什么建议吗?

最佳答案

Commons Configuration 提供了一种方法来执行 custom interpolationThis answer展示了一个例子。您的Lookup实现需要处理解析前缀之后的所有内容,然后进行查找并提供默认值。

关于java - 有没有办法使用 apache-commons 为属性文件中的环境变量提供默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56343575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com