在做项目的时候,常常会有多环境多场景的不同配置.在获取配置的时候有没有感觉很繁琐.今天介绍Config, 从此摆脱配置的烦恼.
<!-- https://mvnrepository.com/artifact/com.typesafe/config -->
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
<version>1.3.4</version>
</dependency>
2.resources目录下创建配置文件

3.创建测试类进行测试
package dintalk.cn.common.demo;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
/**
* @ClassName: ConfigDemo
* @Description:
* @Author: song hui
* @Date: 2021/11/25
*/
public class ConfigDemo {
private Config config;
public void initConfig(){
// 加载指定 路径配置
// this.config = ConfigFactory.load("common/application");
// 默认加载 resources 下的*.properties, *.conf(不含其子目录)
// .conf 文件可以配置json 对象
this.config = ConfigFactory.load();
// 不同配置文件中相同的key会覆盖
/*
* 如果多个config 文件有冲突时,解决方案有:
* 1. a.withFallback(b) //a和b合并,如果有相同的key,以a为准
* 2. a.withOnlyPath(String path) //只取a里的path下的配置
* 3. a.withoutPath(String path) //只取a里出path外的
*/
// Config firstConfig = ConfigFactory.load("first");
// Config secondConfig = ConfigFactory.load("second");
// this.config = firstConfig.withFallback(secondConfig);
}
public Config getConfig() {
return config;
}
public static void main(String[] args) {
ConfigDemo configDemo = new ConfigDemo();
configDemo.initConfig();
Config config = configDemo.getConfig();
System.out.println(config.getString("r"));
// .conf文件中配置的json 对象
Config a = config.getConfig("b");
// 打印 .conf文件中一个json对象的某一个值
System.out.println(a.getString("host"));
// 获取配置文件中通过"." 划分的层级配置
Config d = config.getConfig("d");
System.out.println(d.getString("c"));
// 区分大小写
System.out.println(config.getString("C"));
}
}
怎么样? 方便吧! 你学废了吗?
