首页 > 解决方案 > Java TypesafeConfig 生成配置键并读取其值

问题描述

我在我的项目中使用 Typesafeconfig。我想读取配置并生成一个值,这又是一个配置键,我想读取这个配置键的值。

例子:

fs {
  city = ${CITY}
  number = ${NUMBER}
  cityNumberKey = ${CITY}"_"${NUMBER}
  cityNumber = ${fs.cityNumberKey}
}

在上面的例子中,cityNumber 的值与 cityNumberKey 相同。我实际上想要做的是读取 cityNumberKey 配置的值。

例如,假设 if cityisDelhiNumberis 31,那么我想读取对象中 configDelhi_31的值。cityNumber

欣赏任何相同的例子。

谢谢

标签: javatypesafe-config

解决方案


您可以使用,

参考资料

fs {
    city = "Delhi"
    number = 31
}

我的配置文件

conf {
    city = ${fs.city}
    number = ${fs.number}
    cityNumberKey = ${conf.city}"_"${conf.number}
    cityNumber = ${conf.cityNumberKey}
}

TypesafeConfigTest.java

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

public class TypesafeConfigTest {

    public static void main(String[] args) {
        Config refConfig = ConfigFactory.parseResources("reference.conf").resolve();
        Config myConfConfig = ConfigFactory.parseResources("myconf.conf").withFallback(refConfig).resolve();
        System.out.println("name: " + refConfig.getString("fs.city"));
        System.out.println("title: " + refConfig.getString("fs.number"));
        System.out.println("cityNumberKey: " + myConfConfig.getString("conf.cityNumberKey"));
        System.out.println("cityNumber: " + myConfConfig.getString("conf.cityNumber"));
    }
}

编辑1:

使用单一配置,

conf {
    city = "Delhi"
    number = 31
    cityNumberKey = ${conf.city}"_"${conf.number}
    cityNumber = ${conf.cityNumberKey}
}

TypesafeConfigExamples.java

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

public class TypesafeConfigExamples {

    public static void main(String[] args) {
        Config refConfig = ConfigFactory.parseResources("myconf.conf").resolve();
        System.out.println("name: " + refConfig.getString("conf.city"));
        System.out.println("title: " + refConfig.getString("conf.number"));
        System.out.println("cityNumberKey: " + refConfig.getString("conf.cityNumberKey"));
        System.out.println("cityNumber: " + refConfig.getString("conf.cityNumber"));
    }
}

推荐阅读