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

xJR*_*REB 6 java apache-commons-config

我用来org.apache.commons:commons-configuration2:2.5从配置文件中读取配置参数。在我的 中application.properties,我想指定环境变量的默认值,以防其中之一尚未设置,例如像这样(与 Spring 类似):

idp.username=${env:IDP_USERNAME:defaultUsername}
Run Code Online (Sandbox Code Playgroud)

但是,虽然设置 env 变量工作正常,但指定这样的默认值却不起作用。不幸的是,我在文档中找不到与此相关的任何内容commons-configuration2。如果不显式检查 Java 代码中是否有缺失值,这是否可能?Spring Boot 是否使用了我也可以使用的某个库?我不想仅仅为了拥有这种配置而使用 Spring 框架来使我的简单应用程序变得臃肿。

我当前正在使用的简化代码示例(在这里,我显然可以检查我检索的每个属性并将其替换为默认值,但我想避免这种情况并直接在配置文件中处理它):

idp.username=${env:IDP_USERNAME:defaultUsername}
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

Mat*_*aux 3

Commons Configuration 提供了一种进行自定义插值的方法。这个答案展示了一个例子。您的Lookup实现需要解析前缀之后的所有内容,然后进行查找并提供默认值。