1、基本语法
key: value(注意value前面有空格)
String 类型不用加"" 或''
""会转义特殊字符(eg: name: "zhangsan \n lisi"会换行输出lisi name: 'zhangsan \n lisi' 会直接输出zhangsan \n lisi)
2、值的写法
字面量:普通的值(数字,字符串,日期) eg: name: lisi
对象,map(键值对)
eg: person:
name: lisi
age: 20
行内写法 eg: person: {name: lisi,age: 20}
数组 (list,set)
eg: pets:
-cat
-pig
行内写法: eg; pets: [cat,pig]
3、@Value和@ConfigurationProperties区别
@Value:单个属性指定(复杂类型比如map也不支持),松散绑定,spel不支持,JSP303数据校验支持
@ConfigurationProperties:可批量指定,不支持松散绑定,spel支持,JSP303数据校验不支持支持
4、@PropertySource(value={"classpath:person.properties"})
导入指定位置的属性文件,只能是.properties。yml不能绑定属性
5、配置文件占位符
person.firstname=lisiaaabbbccc
person.age=${random.int}
person.dog.name=${person.firstname}_hahah
person.dog.name2=${person.name}//如果person.name这个没有就用${person.name:anmess},前文可以没有person.name 配置,person.dog.name2=${person.name:aaaa}如果person.name这个没有就用aaaa,相当于配置默认值aaaa
6、Profile
(1)多profile配置
在主配置文件可以创建多个application-{profile}.properties/yml,适应不同环境,然后在application.properties进行指定 {profile} eg:spring.profiles.active=dev [会使application-dev.properties配置文件生效]
默认使用application.properties/yml
通过java -jar XXX.jar --spring-profiles.active=dev在打包时设置端口
(2)yml支持多文档块
server:
port: 8443 //不适用配置时,默认使用
spring:
profiles:
active: dev//使用dev配置的port
---
server:
port: 8886
spring:
profiles: dev //配置dev环境时的port
---
server:
port: 8885
spring:
profiles: prod //配置prod环境时的port
7、配置文件加载顺序
springboot会自动扫描application.properties/yml/yaml作为默认配置可以配置在如下位置
-file:/config/ 当前项目名下的config目录
-file: / 当前项目名下
-classpath:/config 默认的resource文件夹下的config文件夹
-classpath:/ 默认的resource文件夹下
优先级由上往下,高优先级会覆盖低级别的,四个位置的都会加载,互补配置