首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法使用apache-commons在属性文件中为环境变量提供默认值?

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

Stack Overflow用户
提问于 2019-05-28 21:40:50
回答 1查看 2.6K关注 0票数 4

我使用org.apache.commons:commons-configuration2:2.5从配置文件中读取配置参数。在我的application.properties中,我希望为环境变量指定默认值,以防其中一个变量尚未设置,例如,如下所示(类似于Spring):

代码语言:javascript
复制
idp.username=${env:IDP_USERNAME:defaultUsername}

然而,虽然设置env变量可以很好地工作,但是像这样指定一个缺省值是行不通的。不幸的是,我在commons-configuration2文档中找不到与此相关的任何内容。在不显式检查Java代码中缺少的值的情况下,这是可能的吗?Spring Boot是否使用了我也可以使用的某个库?我不想让我的简单应用程序膨胀到只有这种配置的Spring框架。

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

代码语言:javascript
复制
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);
        }
    }

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2019-08-03 02:34:21

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56343575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档