作者平台:
| CSDN:blog.csdn.net/qq_41153943
| 掘金:juejin.cn/user/651387…
| 知乎:www.zhihu.com/people/1024…
| GitHub:github.com/JiangXia-10…
| 微信公众号:1024笔记
本文大约3279字,预计阅读时长9分钟
SpringBoot的配置文件除了支持application.properties文件格式还支持application.yaml格式的配置文件。
YAML (YAML Aint Markup Language)是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,比json、xml和等更适合做配置文件。
Yaml基本语法如下:
1、使用缩进表示层级关系
2、大小写敏感
3、缩进不允许使用tab,只允许空格
4、缩进的空格数不重要,只要相同层级的元素左对齐即可
5、字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义
6、key: value;kv之间有空格
Yaml文件支持三种数据结构:
key: value:字面直接来写;
字符串默认不用加上单引号或者双引号;
“”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “李青 \n 亚索”:输出:李青 亚索
‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘李青 \n 亚索’:输出:李青 \n 亚索
key: value:在下一行来写对象的属性和值的关系,需要进行缩进
对象还是key: value的方式
friends:
lastName: zhangsan
age: 20
复制代码
行内写法:
friends: {lastName: zhangsan,age: 18}
复制代码
使用- 值表示数组中的一个元素
pets:
- cat
- dog
- pig
复制代码
数组行内写法:
pets: [cat,dog,pig]
复制代码
1、在SpringBoot项目中声明一个person实体类和Phone实体类:
@Data
@ToString
@Component
//读取配置文件中以person开头的配置
@ConfigurationProperties(prefix = "person")
public class Person {
private String userName;
private Boolean boss;
private Date birth;
private Integer age;
private Phone phone;
private String[] interests;
private List animal;
private Map score;
private Set salarys;
private Map> allPhones;
}
复制代码
@Data /自动添加getter、setter方法,需要引入lombok依赖/
@ToString
public class Phone {
private String band;
private Double price;
}
复制代码
2、在pom文件中引入spring-boot-configuration-processor依赖,这样自定义的类和配置文件就可以和默认配置一样可以绑定提示。
org.springframework.boot spring-boot-configuration-processor true 复制代码 ```
3、上述依赖只是为了方便开发,适用于开发环境,所以可以在打包的时候不将其进行打包,在pom文件build节点加入下面配置,不加也可以,没有影响,只是会影响打包的大小和速度:
org.springframework.boot
spring-boot-maven-plugin
org.springframework.boot
spring-boot-configuration-processor
复制代码
4、然后在application.yml文件中写入Person的yaml格式的配置:
person:
# 单引号会将\n作为字符串输出,双引号会将\n换行输出:所以双引号不会进行转义,而单引号会转义,因为\n本来就是转义换行的意思
# -n表示N大写,等同于userName
user-name: 张三
boss: true
# 默认时间格式是/
birth: 2020/12/29
age: 18
phone:
band: 华为
price: 6000.00
# interests: [篮球,足球]等同于下面格式
# -代表一个元素
interests:
- 篮球
- 足球
- 18
- 175158455
animal: [猫,狗]
# score: {english:80,math:90}
score:
english: 80
math: 90
salarys:
- 9999.98
- 9999.99
allPhones:
china:
- {band: 华为,price: 6000.00}
- band: 小米
price: 5000.98
- band: oppo
price: 4000.36
America: [{band: Iphone,price: 7000.23},{band: nokia,price: 4002.36}]
复制代码
5、写一个controller类进行测试:
@RestController
public class YamlController {
@Autowired
private Person person;
@RequestMapping("/person")
public Person returnPerson(){
return person;
}
}
复制代码
启动程序,浏览器地址栏输入:http://localhost:8081/share/person,输出以下结果:
以上就是yaml简单的学习,yaml格式文件在开发中使用比较广泛,它比properties文件更加直观,清楚,尤其非常适合用来做以数据为中心的配置文件。在springboot的配置中如果application.properties文件和application.yml文件同时存在,那么都会生效,如果两个文件中对同一配置进行设置,则会以properties文件为准。application.yml也可以写成application.yaml。
如有任何问题或者不对的地方欢迎一起交流讨论学习!
本项目源码在:
github.com/JiangXia-10…
欢迎下载、Star!
SpringBoot多数据源配置
SpringBoot整合Redis使用教程
Springboot+Vue整合笔记【超详细】
SpringBoot开发Restful风格的接口实现CRUD功能
Spring注解(六):Bean的生命周期中自定义初始化和销毁方法的四种方式