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

😀前言
本篇博文是关于以数据为中心的配置文件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: v1k2: v2k3: v3
monster:id: 100name: 牛魔王
  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: 100name: "牛魔王~~"age: 500isMarried: truebirth: 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- 20000cars: #因为cars k-v v是list<Car> 所以我们使用换行风格group1:- {name: 奔驰, price: 300000}- name: 保时捷price: 400000group2:- {name: 奔驰~, price: 100000}- name: 保时捷~price: 500000
  1. 创建com/nlc/springboot/controller/HiController.java

@RestController : 包含了@Controller @ResponseBody

@RestController
public class HiController {@AutowiredMonster 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.hqwc.cn/news/62613.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式--策略模式

目录 一.场景 1.1场景 2.2 何时使用 2.3个人理解 二. 业务场景练习 2.1业务: 2.2具体实现 2.3思路 三.总结 3.1策略模式的特点&#xff1a; 3.2策略模式优点 3.3策略模式缺点 一.场景 1.1场景 许多相关的类仅仅是行为有异&#xff0c;也就是说业务代码需要根据场景不…

物联网的定义、原理、示例、未来

什么是物联网? 物联网 (IoT) 是指由嵌入传感器、软件和网络连接的物理设备、车辆、电器和其他物理对象组成的网络&#xff0c;允许它们收集和共享数据。这些设备(也称为“智能对象”)的范围可以从简单的“智能家居”设备(如智能恒温器)到可穿戴设备(如智能手表和支持RFID的服…

C++:string类模拟实现

C&#xff1a;string类模拟实现 成员变量构造和析构容量相关1.获取容器大小(_size)和容量(_capacity)2.扩容(reserve)3.更改容器大小 修改相关1.尾插2.指定位置插入3.指定位置删除4.清空5.交换两个对象 比较相关访问相关迭代器相关查找相关其它成员函数1.截取子串2.取得C格式字…

记录一次使用python调用java代码

Python调用Java代码的主要原理是通过使用Java虚拟机&#xff08;JVM&#xff09;和相关的库/工具实现的。 在Python中&#xff0c;可以使用以下几种方式来调用Java代码&#xff1a; 使用subprocess模块&#xff1a;可以通过subprocess模块来启动一个子进程&#xff0c;并在子进…

深入浅出 Typescript

TypeScript 是 JavaScript 的一个超集&#xff0c;支持 ECMAScript 6 标准&#xff08;ES6 教程&#xff09;。 TypeScript 由微软开发的自由和开源的编程语言。 TypeScript 设计目标是开发大型应用&#xff0c;它可以编译成纯 JavaScript&#xff0c;编译出来的 JavaScript …

echart图案例

效果 代码&#xff1a; index.vue <template><div class"pageBox"><div class"oneLineBox"><div class"fourColorImgBox"><div class"titleBox">企业风险四色图</div><div class"conte…

Scrum敏捷模型的三个角色!如何在线绘制Scrum敏捷模型图?

1. 什么是Scrum敏捷模型&#xff1f; Scrum是一种敏捷开发方法&#xff0c;用于管理和组织软件开发项目。它强调团队的自组织和迭代式开发&#xff0c;通过不断的反馈和调整来快速交付高质量的软件产品。 Scrum敏捷模型将项目分解为一系列短期的迭代周期&#xff0c;每一个…

ffmpeg命令行是如何打开vf_scale滤镜的

前言 在ffmpeg命令行中&#xff0c;ffmpeg -i test -pix_fmt rgb24 test.rgb&#xff0c;会自动打开ff_vf_scale滤镜&#xff0c;本章主要追踪这个流程。 通过gdb可以发现其基本调用栈如下&#xff1a; 可以看到&#xff0c;query_formats&#xff08;&#xff09;中创建的v…

【遍历】非递归法 二叉树的前中后序遍历

文章目录 非递归法前序遍历后序遍历中序遍历 递归法DFS 非递归法 通过栈Stack来模拟递归。 前序遍历 LeetCode 144 前序遍历&#xff1a;1 2 3 定义&#xff1a;存放答案的List、栈Stack 将root入栈出栈&#xff1a;node&#xff0c;为null则舍弃将node放入list将node.r…

安全测试中常见的业务安全问题

“在测试过程中&#xff0c;特殊的操作往往容易触发异常场景&#xff0c;而这些异常场景也很容易引起安全问题&#xff01;” 常见的安全漏洞就不多说了&#xff0c;这里主要介绍常见的业务安全问题及修复建议。 01 刷短信 问题描述&#xff1a; 当发送短信的请求接口只需要…

股票自动交易接口开发原理及源码分享

股票自动交易接口的开发原理涉及多个方面&#xff0c;主要包括以下几个步骤&#xff1a; 1. 数据接口获取&#xff1a;通过连接到证券交易所或第三方数据提供商的API&#xff0c;获取实时市场数据&#xff0c;包括股票报价、交易成交量、买卖盘口等信息。 2. 策略定义&#x…

田间农业数字管理系统-高标准农田建设

政策背景 2019年11月&#xff0c;国务院办公厅印发的《国务院办公厅关于切实加强高标准农田建设提升粮食安全保障能力的意见》明确提出&#xff0c;到2022年&#xff0c;全国要建成10亿亩高标准农田。 2021年9月16日&#xff0c;由农业农村部印发的《全国高标准农田建设规划&a…