ymal

  |   0 评论   |   0 浏览

ymal

1.yaml 介绍

2.使用文档

1.官方文档

https://yaml.org/

2.yaml for java

https://www.cnblogs.com/strongmore/p/14219180.html

3.yaml 基本语法

  1. 形式为 key: value;注意: 冒号后面有空格
  2. 区分大小写
  3. 使用缩进表示层级关系
  4. 缩进不允许使用 tab,只允许空格 [有些地方也识别 tab , 推荐使用空格]
  5. 缩进的空格数不重要,只要相同层级的元素左对齐即可
  6. 字符串无需加引号
  7. yml 中, 注释使用 #

4.数据类型

1.字面量

  1. 字面量:单个的、不可再分的值。date、boolean、string、number、null
  2. 保存形式为 key: value 如图

image-20220731125003559

2.对象

  1. 对象:键值对的集合, 比如 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: 牛魔王
  1. 举例说明

image-20220731125235585

3.数组

  1. 数组:一组按次序排列的值, 比如 array、list、queue
#行内写法: 
k: [v1,v2,v3] 
hobby: [打篮球, 打乒乓球, 踢足球]
#或者换行格式
k:
 - v1 
 - v2 
 - v3 
hobby: 
 - 打篮球 
 - 打乒乓球 
 - 踢足球
  1. 举例说明

image-20220731125429392

5.yaml 应用实例

1.需求: 使用 yaml 配置文件 和 JavaBean 进行数据绑定, 体会 yaml 使用方式

2.需求图解

  1. 创建项目 configuration , 完成 yaml 的使用
  2. 运行效果

image-20220731125706446

image-20220731125712729

3.代码实现

  1. 创建一个新的 SpringBoot 项目 - configuration
  2. 在 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;
}
  1. 创建 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.启动项目测试

image-20220731134029639

6.yaml 使用细节

  1. 如 果 application.properties 和 application.yml 有 相 同 的 前 缀 值 绑 定 , 则 application.properties 优先级高, 开发时,应当避免
  2. 字符串无需加引号, 这个在前面已经演示了, 如果你用" " 或者 ' ' 包起来, 也可以
  3. 解决 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 名 字就会提示

image-20220731134429113

image-20220731134438647

(4)如果还没有提出提示, 可以安装一个 yaml 插件来搞定.

image-20220731134510939