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

news2025/2/25 17:17:17

😀前言
本篇博文是关于以数据为中心的配置文件yaml的说明和应用,希望能够帮助到您😊

🏠个人主页:晨犀主页
🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊

文章目录

  • yaml
    • yaml 介绍
      • 基本说明
      • 解读
    • 使用文档
    • yaml 基本语法
    • 数据类型
      • 字面量
      • 对象
      • 数组
    • yaml 应用实例
      • 需求图解
      • 代码实现
    • yaml 使用细节
    • 😄总结

yaml

yaml 介绍

在这里插入图片描述

基本说明

1、YAML 是"YAML Ain’t a Markup Language"(YAML 不是一种标记语言) 的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),是为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

解读

1、YAML 以数据做为中心,而不是以标记语言为重点。
2、YAML 仍然是一种标记语言, 但是和传统的标记语言不一样, 是以数据为中心的标记语言。
3、YAML 非常适合用来做以数据为中心的配置文件[springboot : application.yml]

使用文档

官方文档:https://yaml.org/
yaml for java: https://www.cnblogs.com/strongmore/p/14219180.html

yaml 基本语法

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

数据类型

字面量

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

image-20230809221933650

对象

  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-20230809222109207

数组

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

#或者换行格式
k:
 - v1
 - v2
 - v3
hobby:
 - 打篮球
 - 打乒乓球
 - 踢足球
  1. 举例说明

image-20230809222205902

yaml 应用实例

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

需求图解

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

image-20230809222250065

image-20230809222301631

代码实现

  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>
  1. 创建configuration\src\main\java\com\nlc\springboot\bean\Car.java , 提醒一个小细节: 创建的bean 需要在SpringBootApplication 包或者其子包, 否则不会被默认扫描, 同时也不能完全使用lombok 的相关简化注解.
@ToString
@Data
public class Car {
    private String name;
    private Double price;
}
  1. 创建configuration\src\main\java\com\nlc\springboot\bean\Monster.java
@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;
}
  1. 创建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
  1. 创建com/nlc/springboot/controller/HiController.java

@RestController : 包含了@Controller @ResponseBody

@RestController
public class HiController {
    @Autowired
    Monster monster;
    
    @RequestMapping("/monster")
    public Monster monster(){
    	return monster;
    }
}
  1. 启动项目,完成测试

image-20230809222801348

yaml 使用细节

  1. 如果application.properties 和application.yml 有相同的前缀值绑定, 则application.properties 优先级高, 开发时,应当避免

image-20230809222934210

  1. 字符串无需加引号, 这个在前面已经演示了, 如果你用" " 或者’ ’ 包起来, 也可以, 简单举例

image-20230809223000179

image-20230809223008570

image-20230809223017081

  1. 解决yaml 配置文件,不提示字段信息问题

​ 1.如图, 大家可以知道,在编写application.yml 文件时,没有提示Monster 的字段信息,非常不方便

image-20230809223115091

​ 2.在pom.xml 加入spring-boot-configuration-processor 依赖, 可以从spring-boot-reference.pdf 拷贝

image-20230809223202994

<!-- 引入yaml 文件提示, 可以看到JavaBean 字段提示-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
  1. 对application.yml 文件编辑,就会提示字段, 提示: 输入你在Bean 配置的prefix 名字就会提示.

image-20230809223249820

image-20230809223258243

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

image-20230809223314085

😄总结

  1. YAML 是一种较为人性化的数据序列化语言,可以配合目前大多数编程语言使用。
  2. YAML 的语法比较简洁直观,特点是使用空格来表达层次结构,其最大优势在于数据结构方面的表达,所以 YAML 更多应用于编写配置文件。
  3. YAML 仍然是一种标记语言, 但是和传统的标记语言不一样, 是以数据为中心的标记语言。
  4. 字符串无需加引号,加引号也不影响使用。

😁热门专栏推荐
SpringBoot篇
SpringBoot容器–注解的使用
SpringBoot 自动配置–常用配置
Spring Boot介绍–快速入门–约定优于配置
安装Lombok–Lombok的常用注解说明及使用方法
SpringBoot 依赖管理和自动配置—带你了解什么是版本仲裁

文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/863045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年电赛---运动目标控制与自动追踪系统(E题)—— 视觉部分

文章目录 一、前言二、视觉部分2.1&#xff1a;k210识别激光点2.2&#xff1a;k210识别方框和4个角点 三、总结 一、前言 &#x1f337;此次电赛我负责的部分主要是视觉&#xff0c;所以我着重和详细讲解一下视觉部分&#xff0c;不止限于此次电赛&#xff0c;而是从这次电赛视…

canfestival_主站发送同步对象触发主站PDO发送

1.入口处 2.开启定时器 3.调用定时器函数 4.切换到初始化状态&#xff0c;自动切换到预操作状态&#xff0c;最后进入操作状态 看到在预操作状态下&#xff0c;进行了通信状态的切换&#xff0c;调用相应的函数&#xff0c;如下&#xff1a; 5.调用开启SYNC的函数 查找对象字典…

让机器人懂得人类“常识”,3D语义地图能做到吗?

机器人需要一张保姆级地图。 随着机器人的智能化技术不断迭代&#xff0c;对于复杂的行为决策、人机交互等任务仅感知环境的空间几何信息已无法满足要求&#xff0c;它需要让机器人能够像人一样&#xff0c;懂得环境中的物体类别及其位置&#xff0c;即环境的语义信息。以扫地机…

字节跳动基于火山引擎DataLeap的一站式数据治理架构实践

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 在7月22日举行的 ArchSummit 全球架构师峰会&#xff08;深圳站&#xff09;上&#xff0c;来自火山引擎DataLeap的技术专家为大家带来了字节跳动基于火山引擎DataL…

day16:static、final、常量(static final)、

一、static 特点&#xff1a;属于类 、存储在方法去、只有一份或者只执行一次、随类运行执行 可以修饰静态变量 、静态方法 、静态代码块 静态变量能否继承&#xff1f; 静态变量属于类&#xff0c;是共享的资源&#xff0c;不认为是被继承的 静态变量不可以定义在静态方法中…

数据库数据恢复-Oracle数据库数据恢复案例

数据库数据恢复环境&#xff1a; Oracle数据库ASM磁盘组有4块成员盘。 数据库故障&分析&#xff1a; Oracle数据库ASM磁盘组掉线 &#xff0c;ASM实例无法挂载&#xff0c;用户联系我们要求恢复oracle数据库。 数据库数据恢复工程师拿到磁盘后&#xff0c;先将所有磁盘以只…

批量翻译多个文件夹,让你的文件管理更智能高效!

大家好&#xff01;对于经常需要管理大量文件夹的你来说&#xff0c;每次手动逐个改名实在是一项繁琐且易出错的工作。现在&#xff0c;我们为你带来一款强大的文件夹批量改名工具&#xff0c;让你能够轻松实现多个文件夹的批量翻译&#xff0c;让你的文件管理更智能高效 第一…

学会烟感监控有多重要?办公楼真的有必要吗?

随着城市化和建筑规模的不断扩大&#xff0c;火灾风险也日益凸显。为了保障员工和财产的安全&#xff0c;以及及时应对潜在的火灾威胁&#xff0c;办公楼需要采取积极的预防措施。 因此&#xff0c;在这一背景下&#xff0c;安装有效的烟感监控系统变得至关重要。 客户案例 ​…

AI抢饭碗!多部由Midjourney+Runway,制作的电影火了!丨IDCF

ChatGPT等生成式AI正在重塑各个行业的工作模式&#xff0c;尤其是影视领域。最近&#xff0c;多部由MidjourneyRunway生成式AI制作的电影预告片在社交平台上火了。 一部名叫的《芭本海默》的电影从对白、场景、人物、切镜完全由生成式AI制作完成并受到了用户的好评。该片结合了…

PHP 之房贷计算器、组合贷

一、等额本金 // &#xff08;等额本金&#xff09; //$loanAmount>贷款金额 //$loanPeriod>贷款年限 //$interestRate>贷款利息 function calculateEqualPrincipalPayment($loanAmount, $loanPeriod, $interestRate) {$monthlyPrincipal $loanAmount / ($loanPerio…

C#引用Web Service 类型方法,添加搜索本地服务器Web Service 接口调用方法

首先保证现在网络能调用web service接口&#xff0c;右键项目添加服务引用 ![![在这里插入图片描述](https://img-blog.csdnimg.cn/555ba4fa5e2a418f8f85539a9406bcd6.png) 点击高级 添加web服务 输入搜索的服务器接口&#xff0c;选中你要添加调用的方法即可 添加完成调用方…

性能优化-react阻止子组件重渲染

因为父组件的状态变更会触发子组件的渲染&#xff0c;可以用shouldComponentUpdate或memo来阻止。下面就来介绍这两种方法。 类组件-shouldComponentUpdate 注&#xff1a;变化需要在render中打印&#xff0c;在component中检测不到 核心代码: 子组件中用shouldComponentUpda…

[保研/考研机试] KY87 鸡兔同笼 北京大学复试上机题 C++实现

描述 一个笼子里面关了鸡和兔子&#xff08;鸡有2只脚&#xff0c;兔子有4只脚&#xff0c;没有例外&#xff09;。已经知道了笼子里面脚的总数a&#xff0c;问笼子里面至少有多少只动物&#xff0c;至多有多少只动物。 输入描述&#xff1a; 每组测试数据占1行&#xff0c;…

互联网企业帮助中心,普遍都会有的痛点与挑战!

互联网企业不乏在线创意软件工具的“学习、帮助和支持”内容&#xff0c;但他们知道&#xff0c;他们增长最快的细分市场——新手用户——很难找到看似简单的问题的答案&#xff0c;例如“我如何裁剪这张照片”&#xff1f;等等常见问题&#xff0c;一时难觅。自然而然&#xf…

【MySQL】InnoDB存储引擎详解

InnoDB引擎是MySQL5.5版本之后默认的存储引擎 逻辑存储结构 首先是表空间Tablespace&#xff08;ibd文件&#xff09;&#xff1a;一个mysql实力可以对应多个表空间&#xff0c;用于存储及记录&#xff0c;索引等数据 这些存储记录&#xff0c;索引等数据中是用段(Segment)来…

使用KETTLE工具在Oracle和Dm8之间迁移数据

oracle 代码测试数据 CREATE TABLE PRODUCT_CATEGORY ( PRODUCT_CATEGORYID NUMBER(11,0) NOT NULL , NAME VARCHAR2(255) NOT NULL ENABLE, PRIMARY KEY (PRODUCT_CATEGORYID) )INSERT ALL into PRODUCT_CATEGORY(PRODUCT_CATEGORYID, NAME)VALUES(2,国学) into PRODUCT_CATEG…

可以重复烧写的语音ic有哪些特征和优势

目录 一、简介可擦写的语音芯片&#xff0c;其实就是MCUflash的架构&#xff0c;无其他说法&#xff0c;就这一种说法。这个就是它最大的特征尤其是SOP8的封装类型的芯片&#xff0c;是区别于OTP类型的另一个品类&#xff0c;基本上OTP的语音芯片适用的场景。他都可以满足和替代…

【冒泡排序及其优化】

冒泡排序及其优化 冒泡排序核心思想 冒泡排序的核⼼思想就是&#xff1a;两两相邻的元素进⾏⽐较 1题目举例 给出一个倒序数组&#xff1a;arr[10]{9,8,7,6,5,4,3,2,1,0} 请排序按小到大输出 1.1题目分析 这是一个完全倒序的数组&#xff0c;所以确定冒泡排序的趟数&#xff0…

机器学习笔记之优化算法(十三)关于二次上界引理

机器学习笔记之优化算法——关于二次上界引理 引言回顾&#xff1a;利普希兹连续梯度下降法介绍 二次上界引理&#xff1a;介绍与作用二次上界与最优步长之间的关系二次上界引理证明过程 引言 本节将介绍二次上界的具体作用以及它的证明过程。 回顾&#xff1a; 利普希兹连续…

svg圆形进度条

css3实现的圆形进度条较复杂&#xff0c;代码量较多&#xff0c;本文稍微讲解下如何使用svg实现圆形进度条。 svg实现一个圆用<circle>元素&#xff1a; <svg viewBox"0 0 100 100" xmlns"http://www.w3.org/2000/svg"><circle cx"50…