ymal
ymal
1.yaml 介绍
2.使用文档
1.官方文档
2.yaml for java
https://www.cnblogs.com/strongmore/p/14219180.html
3.yaml 基本语法
- 形式为 key: value;注意: 冒号后面有空格
- 区分大小写
- 使用缩进表示层级关系
- 缩进不允许使用 tab,只允许空格 [有些地方也识别 tab , 推荐使用空格]
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- 字符串无需加引号
- yml 中, 注释使用 #
4.数据类型
1.字面量
- 字面量:单个的、不可再分的值。date、boolean、string、number、null
- 保存形式为 key: value 如图
2.对象
- 对象:键值对的集合, 比如 map、hash、set、object
#行内写法:
k: {k1:v1,k2:v2,k3:v3}
monster: {id: 100,name: 牛魔王}
#或换行形式
k:
k1: v1
k2: v2
k3: v3
monster:
id: 100
name: 牛魔王
- 举例说明
3.数组
- 数组:一组按次序排列的值, 比如 array、list、queue
#行内写法:
k: [v1,v2,v3]
hobby: [打篮球, 打乒乓球, 踢足球]
#或者换行格式
k:
- v1
- v2
- v3
hobby:
- 打篮球
- 打乒乓球
- 踢足球
- 举例说明
5.yaml 应用实例
1.需求: 使用 yaml 配置文件 和 JavaBean 进行数据绑定, 体会 yaml 使用方式
2.需求图解
- 创建项目 configuration , 完成 yaml 的使用
- 运行效果
3.代码实现
- 创建一个新的 SpringBoot 项目 - configuration
- 在 pom.xml 引入 lombok, 并切换一下 springboot 版本
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hspedu</groupId>
<artifactId>configuration</artifactId>
<version>1.0-SNAPSHOT</version>
<!--导入springboot父工程-规定写法-->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.5.3</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<!--
这里配置optional为true
说明:只会在当前模块不会依赖到其他模块,这里设置为true防止将此依赖传递到其它模块
-->
<optional>true</optional>
</dependency>
</dependencies>
</project>
3.创建src\main\java\com\llp\springboot\bean\Car.java
@Data
public class Car {
private String name;
private double price;
}
4.创建src\main\java\com\llp\springboot\bean\Monster.java
@Data
@Component
@ConfigurationProperties(prefix = "monster")
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;
}
- 创建 resources/application.yml, 演示各种写法
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.创建src\main\java\com\llp\springboot\controller\HelloController.java
@RestController
@RequiredArgsConstructor
public class HelloController {
private final Monster monster;
@RequestMapping("/monster")
public Monster monster(){
return monster;
}
}
7.启动项目测试
6.yaml 使用细节
- 如 果 application.properties 和 application.yml 有 相 同 的 前 缀 值 绑 定 , 则 application.properties 优先级高, 开发时,应当避免
- 字符串无需加引号, 这个在前面已经演示了, 如果你用" " 或者 ' ' 包起来, 也可以
- 解决 yaml 配置文件,不提示字段信息问题
(1)在编写 application.yml 文件时,没有提示 Monster 的字段信息, 非常不方便
(2)在 pom.xml 加 入 spring-boot-configuration-processor 依 赖
<!-- 引入 yaml 文件提示, 可以看到 JavaBean 字段提示 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<!--
这里配置optional为true
说明: 表示防止将此依赖传递到其它模块
-->
<optional>true</optional>
</dependency>
(3)对 application.yml 文件编辑,就会提示字段, 提示: 输入你在 Bean 配置的 prefix 名 字就会提示
(4)如果还没有提出提示, 可以安装一个 yaml 插件来搞定.