目录
一.yaml 介绍
二.yaml 基本语法
三.数据类型
1.字面量
2.对象
3.数组
四.yaml 应用实例
1.需求:
2.需求图解
3.代码实现
五.yaml 使用细节
一.yaml 介绍
YAML 是
"YAML Ain't a Markup Language"(YAML
不是一种标记语言
)
的递归缩写。在开发
的这种语言时,
YAML
的意思其实是:
"Yet Another Markup Language"(
仍是一种标记语言
)
,
是为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名
解读
1
、
YAML
以数据做为中心,而不是以标记语言为重点
2
、
YAML
仍然是一种标记语言
,
但是和传统的标记语言不一样
,
是以数据为中心的标记语
言
.
3
、
YAML
非常适合用来做以数据为中心的配置文件
[springboot : application.yml]
二.yaml 基本语法
1.
形式为
key: value
;注意
:冒号
后面有空格
2.
区分大小写
3.
使用缩进表示层级关系
monster:
id: 100
name: 小虎
4.
缩进不允许使用
tab
,只允许空格
[
有些地方也识别
tab ,
推荐使用空格
]
5.
缩进的空格数不重要,只要相同层级的元素左对齐即可
6.
字符串无需加引号
7. yml
中
,
注释使用
#
三.数据类型
1.字面量
1.
字面量:单个的、不可再分的值。
date
、
boolean
、
string
、
number
、
null
2.
保存形式为
key: value
如图
2.对象
1.
对象:键值对的集合
,
比如
map
、
hash
、
set
、
object
行内写法: k: {k1:v1,k2:v2,k3:v3}monster: {id: 100,name: 牛魔王 }# 或换行形式k:k1: v1k2: v2k3: v3monster:id: 100name: 牛魔王
2.
举例说明
3.数组
1.
数组:一组按次序排列的值
,
比如
array
、
list
、
queue
行内写法: k: [v1,v2,v3]hobby: [ 打篮球 , 打乒乓球 , 踢足球 ]# 或者换行格式k:- v1- v2- v3hobby:- 打篮球- 打乒乓球- 踢足球
2. 举例说明
四.yaml 应用实例
1.需求:
使用
yaml
配置文件 和
JavaBean
进行数据绑定
,
体会
yaml
使用方式
2.需求图解
1.
创建项目
configuration ,
完成
yaml
的使用
2.
运行效果
3.代码实现
1.
创建一个新的
SpringBoot
项目
- configuration ,
2.
在
pom.xml
引入
lombok,
并切换一下
springboot
版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 引入 lombok, 版本在 spring-boot-dependencies-2.5.3.pom 指定了-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
3. 创建bean文件(car)
提醒
一个小细节
:
创建的
bean
需要在
SpringBootApplication
包或者其子包
,
否则不会被默认扫
描
,
同时也不能完全使用
lombok
的相关简化注解
@ToString
@Data
public class Car {
private String name;
private Double price;
}
4.
创建bean文件(monster)
@ConfigurationProperties(prefix = "monster")
@Component
@ToString
@Data
public class Monster {
private Integer id;
private String name;
private Integer age;
private Boolean isMarried;
private Date birth;
private Car car;
private String[] skill;
private List<String> hobby;
private Map<String, Object> wife;
private Set<Double> salaries;
private Map<String, List<Car>> cars;
}
5.
创建
resources/application.yml,
演示各种写法
.
提醒
:
编写
application.yml
时
,
这
些
Bean
的字段是可以通过
安装插件或
jar
来
自动提示
的
,
后面会讲
,
现在先苦后甜
.
monster:
id: 100
name: "牛魔王~~"
age: 500
isMarried: true
birth: 2000/10/10
#对象
# car: {name: 宝马, price: 200000} #行内格式
car: #换行格式
name: 宝马~
price: 300000
#数组
# skill: [芭蕉扇, 牛魔拳] #行内格式
skill:
- 芭蕉扇~
- 牛魔拳~
# hobby: [喝酒, 吃肉] #行内格式
hobby:
- 喝酒~
- 吃肉~
#map-属于对象
# wife: {no1: 玉面狐狸, no2: 铁扇公主} #行内风格
wife:
no1: 玉面狐狸~
no2: 铁扇公主~
# salaries: [10000,20000] #行内风格
salaries:
- 10000
- 20000
cars: #因为cars k-v v是list<Car> 所以我们使用换行风格
group1:
- {name: 奔驰, price: 300000}
- name: 保时捷
price: 400000
group2:
- {name: 奔驰~, price: 100000}
- name: 保时捷~
price: 500000
6. 创建控制器HiController.java
@RestController
public class HiController {
@Resource
private Monster monster;
@RequestMapping("/monster")
public Monster monster() {
return monster;
}
}
五.yaml 使用细节
1.
如 果
application.properties
和
application.yml
有 相 同 的 前 缀 值 绑 定 , 则
application.properties
优先级高
,
开发时,应当避免
2.
字符串无需加引号
,
这个在前面已经演示了
,
如果你用
" "
或者
' '
包起来
,
也可以
,
简
单举例
3.
解决
yaml
配置文件,不提示字段信息问题
1)
如图
,
大家可以知道,在编写
application.yml
文件时,没有提示
Monster
的字段信息,
非常不方便
2)
在
pom.xml
加 入
spring-boot-configuration-processor
依 赖
,
可 以 从
spring-boot-reference.pdf 拷贝
<!-- 引入 yaml 文件提示, 可以看到 JavaBean 字段提示 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
4) 对 application.yml 文件编辑,就会提示字段, 老韩提示: 输入你在 Bean 配置的 prefix 名字就会提示.
5) 提示: 如果还没有提出提示, 可以安装一个 yaml 插件来搞定