赞
踩
创建一个springboot项目《spring boot2.0 第一个程序《快速开始》》
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
application.properties
application.yml
配置文件的主要作用:
修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好的一些默认属性
自定义一些属性,并且注入的spring的容器中
加载级别:优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;互补配置;
我们还可以通过spring.config.location来改变默认的配置文件位置
加载文件顺序,可以看到,文件可以存放在项目外部,可以项目内部(classpath下),外部的优先级别要高于内部的
外部的文件的优先级别可以参考官网的文档https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#boot-features-external-config
我们来看下yml的语法:先定义一个实体对象
- public class Emp {
- private String name;
-
- private Integer age;
-
- private List<String> list;
-
- private Map<String, String> map;
- //免去get 和set方法
- }
yml文件的语法:属性和值也是大小写敏感 ,属性与属性之间,需要换行空2格
- emp:
- #普通的类的数据 使用key: val
- name: xiaoli
- age: 18
- #集合的形式 行内写法 list: [xiaoming,xiaohong]
- list:
- - xiaoming
- - xiaohong
- #map 或者对象的写法 行内写法 map: {test01:test01,test02:test02}
- map:
- test01: test01
- test02: test02
1:字面量:普通的值(数字,字符串,布尔)
使用 字段:(空格)值
注意:字符串默认不用加上单引号或者双引号;
"":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思 (例如:xiaoli \n,表示xiaoli 换行)
'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
2:对象、Map(属性和值)(键值对):
对象下,还是使用 字段:(空格)值
3:数组(List、Set):
- list:
- - xiaoming
- - xiaohong
- list: [xiaoming,xiaohong]
字段:
横杠(空格)值
4:还可以使用${}符号,引用已经配置过的属性(包括默认配置以及自定义的配置)
- emp:
- name: xiaoli
- age: 18
- list:
- ##如果${emp.age}没有值,可以使用${emp.age:19}来指定默认值
- - ${emp.age}xiaoming
- - xiaohong
- map:
- test01: test01
- test02: test02
5:也可以使用系统定义的一些函数
- ${random.value}、${random.int}、${random.long}
- ${random.int(10)}、${random.int[1024,65536]}
最后把属性注入到这个对象中,使用 @ConfigurationProperties(prefix = "emp")注解,标注在实体类上,并@Component 加入到容器中
- @Component
- @ConfigurationProperties(prefix = "emp")
- public class Emp {
- private String name;
-
- private Integer age;
-
- private List<String> list;
-
- private Map<String, String> map;
- //免去get和set方法
- }
另外,在之前的《spring 注解@PropertySource 引入文件,@Value读取文件内容,EmbeddedValueResolverAware读取文件内容》中,也可以使用@Value注解,来注入属性的值,当然,两者之间还是有区别的
@Value获取值和@ConfigurationProperties获取值比较
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持(userName或者user-name) | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持(@Validated注解的支持) | 不支持 |
复杂类型封装 | 支持(支持各种嵌套类型,复杂类型) | 不支持 |
上述的yml用法,在application.properties中的用法如下:
- emp.age=18
- emp.list=xiaohong,xiaolan
- emp.map.k1=k1
- emp.map.k2=k2
- ##集合的另一种写法,yml文件,也是支持的
- emp.list[0] = xioali
- emp.list[1] = xioali
更加的详细的,就不介绍了,大家在实际应用中,再发现和探究吧
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。