以数据为中心的标记语言-->yaml

2023-11-17

目录

一.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: v1
        k2: v2
        k3: v3
monster:
        id: 100
        name: 牛魔王
2. 举例说明

3.数组

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

 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 插件来搞定 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以数据为中心的标记语言-->yaml 的相关文章

随机推荐

  • C语言库函数——快排函数qsort()

    目录 一 函数原型 二 函数介绍 三 函数使用 常见写法 比较函数 四 函数实例 1 int型数组 2 double型数组 3 char型数组 4 字符串 5 结构体 一级结构 二级结构 一 函数原型 void qsort void bas
  • CAN协议详解-01

    CAN 是控制器局域网络 Controller Area Network 的简称 它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的 并最终成为国际标准 ISO11519以及ISO11898 是国际上应用最广泛的现场总线之一 差
  • 《机器学习实战》第14章学习笔记(数据约简工具---SVD)

    一 SVD基本原理 提取这些信息的方法称为奇异值分解 Singular Value Decomposition SVD 在很多情况下 数据中的一小段携带了数据集中的大部分信息 其他信息则要么是噪声 要么就是毫不相关的信息 在线性代数中还有很
  • unity如何解决每次写完敲代码,调试时需要卡个进度条

    解决办法如下 勾选上之后程序就可以立刻运行起来了 再也不用一直卡进度条了 不过也有弊端的 会影响静态字段初始化有问题还有Dotween的一些效果会发生变化 谨慎避免入坑
  • armbian安装图形桌面_Linux的图形用户界面-你会选择哪个?

    时至今日 Linux在服务器端的地位是毋庸置疑的 其常见的命令行界面是相当稳定的 图形界面嘛 存在众多版本 兼容性有待进一步提升 常见的图形界面有 以ubuntu系统为例 Unity 这是Ubuntu自带的图形界面 相当炫 但吃内存比较大
  • 毕业设计-基于机器学习的中文文本分类算法

    目录 前言 课题背景和意义 实现技术思路 一 文本分类综述 二 文本分类相关技术简 1 文本处理过程 2 分类算法 3 分类算法评价方法 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学
  • Snowy Smile【扫描线】【2019 杭电多校6】

    HDU 6638 题目链接 比赛的时候只在拼命的想怎么去优化O N 3 的那个之前所认为的标准解法 没想到 这就是一道O N 2 logN 的扫描线 我们可以固定上下两个区间 然后在固定的区域中 就是一维的空间了 我们直接在这一维里去查询即
  • 数字芯片流程

    芯片设计分为前端设计和后端设计 前端设计 逻辑设计 和后端设计 物理设计 并没有同意严格的界限 这个过程中涉及到了与工艺有关的设计就是后端设计 一 需求分析 产品需要解决的问题 预测3 5年的趋向和走势 确保前瞻性 确保芯片是有卖点的 客户
  • kong dashboard UI 的使用 (使用kong 对服务反向代理,以及解决跨域问题)

    7 2Choose Security and click on ADD PLUGIN in cors then don t input content and click on ADD PLUGIN button directly 第一步登
  • 【Zotero6】插件Zotcard自定义笔记模板流程分享

    Zotero 个人感觉比Endnote更好用的文献管理器 集翻译 文献整理 笔记 查询期刊影响因子 期刊分区等集于一身的文献管理器 据说是一款开源软件官网就可以免费下载 安装附加的浏览器插件使用更方便 今天更新的是Zotero中的笔记插件
  • 计算机操作系统pcb是什么意思,简述PCB的含义以及作用

    描述 为了使参与并发执行的每个程序 包含数据都能独立地运行 在操作系统中必须为之配置一个专门的数据结构 称为进程控制块 PCB Process Control Block 进程与PCB是一一对应的 用户进程不能修改 进程控制块PCB的作用
  • muduo 架构解析

    muduo是一个基于Reactor模式的C 网络库 它采用非阻塞I O模型 基于事件驱动和回调 我们不仅可以通过muduo来学习linux服务端多线程编程 还可以通过它来学习C 11 Reactor是网络编程的一般范式 我们这里从react
  • RockyLinux9.1环境初始化

    下载镜像 https rockylinux org download 基础设置 硬件配置 系统配置 系统初始化 配置网络 配置网络 etc NetworkManager system connections ens160 nmconnect
  • 要言不烦先行指标与滞后指标的12个要点

    先行指标 leading indicator 是在结果发生之前对结果具有预测作用的度量数据 又称为超前指标 预测性指标 先导指标 领先指标 行为指标 过程指标等 滞后指标 lagging indicator 是对最终结果的度量数据 反映的是
  • jar包读取资源文件报错:找不到资源文件(No such file or directory)

    1 遇到问题 1 Maven项目开发阶段正常运行 Java程序可以读取配置文件 public class Main public static void main String args throws Exception Main read
  • python——返回函数、闭包函数、偏函数

    文章目录 1 返回函数 2 闭包函数 3 偏函数 1 返回函数 函数的返回值也可以是函数 def food name 外函数 def prepare 内函数 print f name 制作步骤 备菜 内部函数可以使用外部函数的变量 def
  • 看涨期权计算例题(期权案例计算)

    看涨期权又称认购期权 买进期权 买方期权 买权 延买期权 或 敲进 是指期权的购买者拥有在期权合约有效期内按执行价格买进一定数量标的物的权利 下文为大家科普看涨期权计算例题 期权案例计算 本文来自 期权酱 当看涨期权 Call Option
  • 同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示

    问题描述 提示 HBuilderX 真机调试异常 这个问题困惑了我好几天 终于解决了 同步资源失败 未得到同步资源的授权 请停止运行后重新运行 并注意手机上的授权提示 解决方案 提示 使用adb删除对应包名 问题未解决 尝试重新启动手机再运
  • 第十届蓝桥杯省赛C++B组 数列求值

    试题 C 数列求值 本题总分 10 分 问题描述 给定数列 1 1 1 3 5 9 17 从第 4 项开始 每项都是前 3 项的和 求第 20190324 项的最后 4 位数字 答案提交 这是一道结果填空的题 你只需要算出结果后提交即可 本
  • 以数据为中心的标记语言-->yaml

    目录 一 yaml 介绍 二 yaml 基本语法 三 数据类型 1 字面量 2 对象 3 数组 四 yaml 应用实例 1 需求 2 需求图解 3 代码实现 五 yaml 使用细节 一 yaml 介绍 YAML 是 YAML Ain t a