七,Spring Boot 当中的 yaml 语法使用

七,Spring Boot 当中的 yaml 语法使用


1. yaml 的介绍

yaml 的基本说明

  1. YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。[百度百科]
  2. YAML 是以数据作为中心,而不是以标记语言为重点
  3. YAML 仍然是一种标记语言,但是和传统的标记语言不一样,是以数据为中心的标记语言
  4. YAML 非常适合用来做以数据为中心 的配置文件【springboot:application.yml/ application.yaml】

yaml 的官方文档:https://yaml.org/

中文:这是一个博主自己写的:这里推荐一下给大家:https://ww.cnblogs.com/strongmore/p/14219180.html

2. yaml 基本语法

  1. yaml 语法的形式为:key: value 注意: key双引号的后面有空格。不可以漏了

  2. yaml语法是区分大小写的 ,id 和 ID 不是同一个东东

  3. yaml 语法是:使用缩进表示层级关系

  4. yaml 语法上的缩进不允许使用 tab 键,只允许使用空格 ,因为不同的编译器,对 Tab 键的格式不同。所以,推荐使用空格

  5. 缩进的空格数不重要,只要相同层级的元素左对齐即可,也就是相同层级的元素的空格数保持一致即可。

  6. yaml 对于字符串,可以不用加引号,当然,你加了引号也不会报错,也可以被识别为字符串。

  7. yaml 语法中,注解使用 #

  8. 注意:yaml中,要编写中文的话,要将项目的编码设置为 utf-8 ,不然,在 yaml 中无法识别到中文,会报错。

  9. yaml 文件的后缀,可以是 yaml 或者是 yml ,两者都是可以的。

3. yaml 数据类型

对于 yaml 来说,数据类型分为三种:

  • 字面量
  • 对象
  • 数组

4. 学习测试的准备工作

首先我们这里准备好需要使用的 两个Bean对象,用于使用 yaml 语法进行属性上的赋值。

这里我使用了 Lombok 插件,简化单例 bean 对象的编写,关于 Lombok 的使用,大家可以移步至:✏️✏️✏️ 六,Spring Boot 容器中 Lombok 插件的详细使用,简化配置,提高开发效率-CSDN博客

在这里插入图片描述

package com.rainbowsea.springbootyaml.bean;


import lombok.Data;




@Data
public class Car {
    private String name;
    private Double price;

}

在这里插入图片描述

package com.rainbowsea.springbootyaml.bean;


import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;


@ConfigurationProperties(prefix = "monster")
@Component
@Setter
@Getter
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Monster {
    private Integer id;
    private String name;
    private Boolean isMarried;
    private Integer age;
    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;

}

还有一个 controller 请求处理的控制器

在这里插入图片描述

package com.rainbowsea.springbootyaml.controller;


import com.rainbowsea.springbootyaml.bean.Monster;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;



@RestController  // @Controller + @ResponseBody
public class HiController {


    //@Resource  // 通过 yaml 注入赋值 @Resource 和 Autowired 都可以,因为该bean对象已经被注入到ioc容器当中了
    @Autowired
    private Monster monster;


    @RequestMapping("/monster")  // 设置请求的映射路径
    public Monster monster(){
        return monster;
    }
}

最后就是一个应用程序的启动场景了

在这里插入图片描述

package com.rainbowsea.springbootyaml;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

4.1 yaml 字面量

字面量:单个的,不可再分的值,比如:date,boolean,string,number,null

保存形式:key: value 注意空格。

monster:
  age: 5000
  is-married: true
  birth: 2000/10/10
  name: 牛魔王
  id: 100
car: # 换行格式
  name: 宝马~
  price: 30000

在spring boot 当中,一般将 yaml 的配置文件,放到 类路径下 resources 下。名为application.yaml / application.yml。这里我们以 yml 后缀进行测试。

在这里插入图片描述

在这里插入图片描述

monster:
  age: 5000
  is-married: true
  birth: 2000/10/10
  name: 牛魔王
  id: 100
  # 对象
  #  car: {name: 宝马,price: 10000} # 行内格式,不用忽略了空格,里面,和外面的空格
  car: # 换行格式
    name: 宝马~
    price: 30000

运行测试:

在这里插入图片描述

特别说明:

想要使用 yaml 的配置文件,赋值到对应的bean对象上的属性值上,需要使用@ConfigurationProperties(prefix = "monster") 注解。@ConfigurationProperties(prefix = “前缀”)

在这里插入图片描述

4.2 yaml 数组

数组:一组次序排列的值,比如 array,list,queue

行内写法: K: [v1,v2,v3] # 注意:K引号后要有空格
# 或者是
K:
- v1
- v2
- v3
# 减号,后面要有空格

举例:

在这里插入图片描述

monster:
  age: 5000
  is-married: true
  birth: 2000/10/10
  name: 牛魔王
  id: 100
  # 对象
  #  car: {name: 宝马,price: 10000} # 行内格式,不用忽略了空格,里面,和外面的空格
  car: # 换行格式
    name: 宝马~
    price: 30000

    # 数组
  skill:  [芭蕉扇,牛魔拳]  # 行内格式
  #  skill:
  #    - 芭蕉扇~
  #    - 牛魔拳~

  #  hobby: [喝酒,吃肉] # 行内格式
  hobby:
    - 喝酒~
    - 吃肉~

运行测试:

在这里插入图片描述

4.3 yaml 对象

对象:键值对的集合:比如:map,hash,set,object

行内写法: K: {k1: v1,k2: v2,k3: v3} # 注意:行内的key引号后也要空格一下
或者是:
K:
 k1: v1
 k2: v2
 k3: v3 
 # 注意空格.

举例
在这里插入图片描述

monster:
  age: 5000
  is-married: true
  birth: 2000/10/10
  name: 牛魔王
  id: 100
  # 对象
  #  car: {name: 宝马,price: 10000} # 行内格式,不用忽略了空格,里面,和外面的空格
  car: # 换行格式
    name: 宝马~
    price: 30000

    # 数组
  skill:  [芭蕉扇,牛魔拳]  # 行内格式
  #  skill:
  #    - 芭蕉扇~
  #    - 牛魔拳~

  #  hobby: [喝酒,吃肉] # 行内格式
  hobby:
    - 喝酒~
    - 吃肉~


  #map 属性对象
  #  wife: {no1: 玉面狐狸,no2: 铁扇公主} # 行内风格,不用忽略了空格,里面,和外面的空格
  wife:
    no1: 玉面狐狸
    no2: 铁扇公主
  salaries: [10000,20000]
  cars: # 因为   private Map<String,List<Car>> cars;
    group1:
      - {name: 奔驰,price: 3000}
      - name: 保时捷
        price: 6000
    group2:
      - {name: 保时捷,price: 8000}
      - name: 宝马
        price: 5000

运行测试:

在这里插入图片描述

5. yaml 使用细节和注意事项

  1. 如果 application.propertiesapplication.yaml 有相同的前缀数值上的绑定的话,则application.properties 优先级高,开发时,应当避免。

在这里插入图片描述

  1. 在 yaml 当中,字符串无需加引号,但如果你用 "" 或者是 '' 包起来,也可以。都不会报错。
  2. 大家知道,我们在编写 application.yaml 文件时候,没有提示Bean对象的属性字段的信息表,非常不方便。解决这个问题,同时,你已经配置好了的 属性,它是不会提示的,非常的方便。我们只需要添加上如下依赖即可。同时也能解决(),使用 @ConfigurationProperties(prefix = “furn01”) 会提示如下信息 但是不会影响使用

在这里插入图片描述

解决方法: 在 pom.xml 增加依赖, 即可

在这里插入图片描述

        <!--        解决  @ConfigurationProperties(prefix = "furn01") 提示信息,  在 pom.xml  增加依赖,  即可
Spring Boot Configuration Annotation Processor not configured 提示信息
这里配置 optional 为 ture
    说明: 表示防止将此依赖传递到其它模块上,
-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
  1. 如果上述方式没有提示的话,可以安装一个名为 yaml的插件来搞定。

在这里插入图片描述

6. 总结:

  1. 熟悉 yaml 的基本语法。
  2. yaml 的数据类型有三种:字面量,数组,对象。
  3. 有时候,赋值失败了,看看是不是,对应空格层级的控制不对。没有对上。对正确。
  4. yaml 语法当中,: 号后面都用空格,不用漏了。
  5. 注意:yaml中,要编写中文的话,要将项目的编码设置为 utf-8 ,不然,在 yaml 中无法识别到中文,会报错。
  6. yaml 文件的后缀,可以是 yaml 或者是 yml ,两者都是可以的。
  7. yaml 语法上的缩进不允许使用 tab 键,只允许使用空格 ,因为不同的编译器,对 Tab 键的格式不同。所以,推荐使用空格。
  8. 缩进的空格数不重要,只要相同层级的元素左对齐即可,也就是相同层级的元素的空格数保持一致即可。

7. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值