项目中配置文件的读取

在工作中,我们一般都不会把变化的地方写死.比如开发环境和测试环境的服务器地址,等等之类的信息.这些我们都会写入到配置文件中,方便修改.

com.typesafe.config加载任意位置的配置文件

typesafe下的config包可以用来读取配置文件,支持多种形式。

Overview

Typesafe的Config库,纯Java写成、零外部依赖、代码精简、功能灵活、API友好。支持Java properties、JSON、JSON超集格式HOCON以及环境变量。它也是Akka的配置管理库.

如果没引上,使用如下依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.typesafe/config -->
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
<version>1.3.1</version>
</dependency>
  • 纯java实现,无任何依赖
  • 可以合并各种格式的配置文件
  • 可以通过文件、urls、classpath加载配置
  • 支持多层嵌套的配置方式
  • 可以转换长短,大小等单位
  • 类型转换

加载配置文件的两种方式

目录结构

1
2
3
4
5
6
7
8
9
10
11
hushiwei@localhost  ~/IdeaProjects/testProject/src/main  tree
.
├── java
│   └── com
│   └── husw
├── resources
│   ├── conf
│   │   └── application.conf
│   ├── testlog.txt
│   └── log4j.properties
└── scala

配置文件示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
kafka {
topics = "test_imp" #注释
brokers = "192.168.1.1:9092,192.168.2.1:9092"
groupid="test_group1"
offset_reset="smallest" #smallest and largest
}
spark {
app_name = "dsp_count"
mode = "local[2]" #"yarn-client"
queue = "normal"
duration = 2
numFilesPerBatch = 1
stagingdir = "/tmp/spark/checkpoint"
}

加载resources目录下的配置文件

默认读取resources目录下的文件

1
val config = ConfigFactory.load("conf/application.conf")

加载任意指定位置的配置文件

路径可以写任意的绝对路径,或者相对路径

1
val config = ConfigFactory.parseFile(new File("src/main/resources/conf/application.conf"))

获取配置文件中的键值

读取配置文件后返回了config对象.
直接调用config对象相应的api即可获取配置数据了
Api文档
示例

1
2
val topics = config.getString("kafka.topics").split(",").toSet
println(topics)

若要知道更详细的api说明,点击上面的链接即可.

Donate comment here