当前位置: 首页 > news >正文

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

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

文章目录

  • 七,Spring Boot 当中的 yaml 语法使用
  • 1. yaml 的介绍
  • 2. yaml 基本语法
  • 3. yaml 数据类型
  • 4. 学习测试的准备工作
    • 4.1 yaml 字面量
    • 4.2 yaml 数组
    • 4.3 yaml 对象
  • 5. yaml 使用细节和注意事项
  • 6. 总结:
  • 7. 最后:


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容器当中了@Autowiredprivate 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: 5000is-married: truebirth: 2000/10/10name: 牛魔王id: 100
car: # 换行格式name: 宝马~price: 30000

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

在这里插入图片描述

在这里插入图片描述

monster:age: 5000is-married: truebirth: 2000/10/10name: 牛魔王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: 5000is-married: truebirth: 2000/10/10name: 牛魔王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: v1k2: v2k3: v3 # 注意空格.

举例
在这里插入图片描述

monster:age: 5000is-married: truebirth: 2000/10/10name: 牛魔王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: 6000group2:- {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. 最后:

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

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 虚幻地形高度图生成及测试
  • 数据结构树(C语言版)
  • 华为OD机试 - 猜数字 - 穷举搜索(Java 2024 E卷 100分)
  • docker实战基础三(Docker基础命令)
  • 深度学习100问54:什么是自动图像描述
  • Pyspark中的ROW对象使用
  • [Doc][px4][ros2][gazebo][yolov8]PX4-ROS2-Gazebo-YOLOv8
  • SQL 数据查询
  • 《JavaEE进阶》----8.<SpringMVC实践项目:【简易对话留言板(数据存在内存中)】>
  • 3134. 找出唯一性数组的中位数
  • Go父类调用子类方法(虚函数调用)
  • k8s中pod基础及https密钥、horber仓库
  • 修改服务器DNS解析及修改自动对时时区
  • 零信任赋予安全牙齿,AI促使它更锋利
  • JAVA vs Python:谁更适合后端开发?
  • 分享一款快速APP功能测试工具
  • css选择器
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JavaScript对象详解
  • JavaScript设计模式系列一:工厂模式
  • JS数组方法汇总
  • MD5加密原理解析及OC版原理实现
  • mysql外键的使用
  • scrapy学习之路4(itemloder的使用)
  • spring cloud gateway 源码解析(4)跨域问题处理
  • TCP拥塞控制
  • Terraform入门 - 3. 变更基础设施
  • Theano - 导数
  • 百度地图API标注+时间轴组件
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 对JS继承的一点思考
  • 搞机器学习要哪些技能
  • 将回调地狱按在地上摩擦的Promise
  • 浅谈Golang中select的用法
  • 日剧·日综资源集合(建议收藏)
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一个项目push到多个远程Git仓库
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 译米田引理
  • 应用生命周期终极 DevOps 工具包
  • elasticsearch-head插件安装
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • # Maven错误Error executing Maven
  • #162 (Div. 2)
  • #HarmonyOS:Web组件的使用
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (1)Nginx简介和安装教程
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (30)数组元素和与数字和的绝对差
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (二十三)Flask之高频面试点
  • (六)DockerCompose安装与配置
  • (五)MySQL的备份及恢复