Spring Boot 中的配置绑定一直是其最主要的特性。而在Spring Boot 2.0中,该绑定方式做了大量的修改,并且借机制定一些新的规范,以减少过于宽松的绑定规则导致的一些问题
您也可以通过官方的Relaxed-Binding-2.0 wiki了解详细
设置配置属性
简单的类型
配置文件中的简单类型,都会被移除特殊字符并转为小写后,进行绑定。例如下面的几个配置都等价于spring.jpa.databaseplatform=mysql
:
1 |
|
当然,推荐的是kebab-case命名,也是上面例子中的
spring.jpa.database-platform=mysql
List类型
List类型的属性,在配置文件中需要使用[ ]
标记符:
1 |
|
或者yml的标准写法
1 |
|
同时,还支持使用逗号分割成数组,例如:
1 |
|
注意:在properties,如果遗漏中间的索引,会导致无法绑定异常,下面是不被允许的:
1 |
|
Map 类型
Map类型标准格式很简单my-example.key=value
,yml类似的,但当遇到特殊字符时,就需要特别处理,但官方文档上讲的,不是很清楚,所以写了几个例子做实验
1 |
|
1 |
|
结果如下图所示:
环境变量
在环境变量中,使用_
代替.
或者[]
,如果_
包围的是一数字,就替换为[]
,其余情况为.
,例如:
1 |
|
读取配置属性
如果,你需要从环境中读出属性值到你的app中,你需要使用与配置文件一样规则的名称
- 相同的名称
- 必须是 (a-z,0-9)字母
- 必须是 小写
- 唯一允许的特殊字符是
[]
,用于表示list的索引 - 用连接符
-
分割单词 - 不能以数字开头
下面是一个从配置文件中读出属性的例子:
1 |
|
@Value 也需要遵守一样的规则