第二十一章 项目配置¶
Play配置文件基于 Typesafe.config
配置库, Typesafe.Config
库,纯Java写成、零外部依赖、代码精简、功能灵活、API友好。支持 Java properties、JSON、JSON
超集格式 HOCON
以及环境变量。它也是 Akka
的配置管理库。
配置信息必须定义在 conf/application.conf
,它采用 HOCON
格式。
指定配置文件¶
运行程序时,默认从 application.conf
中加载配置,不过也可以指定配置文件。
config.resource
指定配置文件名以及后缀。config.file
指定配置文件所在路径。
通过这两种方式指定配置文件会替换掉默认的配置文件。
还可以在配置文件中使用 include application
引用其他配置文件。
与Akka一起使用¶
Akka与Play使用同一个配置文件 application.conf
。
与run命令一起使用¶
当通过 run
命令加载配置文件时,要注意如下事项:
格外的devSettings¶
可以在 build.sbt
中配置格外信息,当我们部署到生产环境中时,不会使用这些配置信息。
PlayKeys.devSettings := Seq("play.server.http.port" -> "8080")
application.conf中的配置服务器信息¶
在 run
模式下,Play服务器首先运行,然后再编译源代码。这也就意味着HTTP服务器刚开始运行时无法读取 application.conf
中的配置信息。如果你需要覆写HTTP服务器的信息,就不能使用 application.conf
进行配置,比如服务器端口,这个时候可以直接在命令行中配置:
> run -Dhttp.port=1234
HOCON语法¶
HOCON
的语法格式与 JSON
类似。
与JSON保持一致的部分
- 文件必须以UTF-8编码
- 引号括起来的字符串与JSON字符串一样
- 取值类型可以为:字符串,数值,对象,数组,布尔值,
null
。 - 不支持
NaN
注释¶
使用 #
或者 //
进行注释
省略根括号¶
JSON格式中根元素必须是个数组或对象。空文档是非法的格式。
而在 HOCON
中,如果文档不是以[或者{开始的话,解析的时候默认会给它加上{}。
如果一个 HOCON
文档省略了{但是末尾还是有}的话,文档还是合法的。
键值对¶
在JSON中配置采用键值对的形式 key:value
,而在 HOCON
中,可以使用 =
替换 :
。
如果 key
的后面是 {
,则 =
或者 :
都可以省略。所以 "foo" {}
等价于 "foo":{}
逗号¶
数组中的变量,以及对象中的字段,它们中间不一定需要,分开,也可以使用 \n
分隔。
数组中的最后一个元素或者字典中的最后一个字段后面可以跟一个逗号。这个逗号会被忽略掉。
所以:
[1,2,3]
等价于[1\n2\n3]
[1,2,3]
等价于[1,2,3,]
导入配置文件¶
使用 include "file"
的形式导入配置文件。