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

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

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

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连支持一下,创造不易您们的支持是我的动力🤞

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Kubernetes中,可以使用YAML格式来编写资源对象的配置文件。YAML是一种简洁的非标记语言,以数据中心,使用空白、缩进和换行来组织数据。以下是一些关于YAML文件编写的详细信息: 1. 大小写敏感:YAML是大小写敏感的,因此在编写YAML文件时需要注意大小写的正确使用。 2. 使用缩进表示层级关系:YAML使用缩进来表示数据的层级关系,一般使用空格键进行缩进。Tab键是不被允许的。 3. 缩进的空格数目不重要:相同层级的元素只需要左侧对齐即可,一般情况下使用两个空格进行缩进。 4. 使用#表示注释:在YAML文件中,可以使用#符号来添加注释,注释内容从#字符开始一直到行尾都会被解析器忽略。 5. 特殊字符的使用:在YAML中,一些特殊字符如冒号、逗号、短横杠等需要进行特殊处理,通常在这些字符后面会缩进一个空格。 6. 对象的表示:对象使用键值对的方式表示,使用冒号结构进行分隔,例如`animal: pets`。 7. 另一种对象的写法:YAML还支持将所有键值对写在一行内的行内对象表示法,例如`hash: {name: Steve, foo: bar}`。 8. 数组的表示:数组使用连词线开头的行来表示,每个元素占据一行,例如: ``` - Cat - Dog - Goldfish ``` 9. 子成员是数组:如果数据结构的子成员是一个数组,可以在该项下面缩进一个空格,例如: ``` - - Cat - Dog - Goldfish ``` 10. 文件示例:下面是一个Kubernetes的YAML文件的示例,用于创建一个名为"kubernetes-dashboard"的命名空间: ``` apiVersion: v1 kind: Namespace metadata: name: kubernetes-dashboard ``` 以上是关于Kubernetes中YAML文件编写的一些详细信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [kubernetes-----YAML文件编写详解](https://blog.csdn.net/qq_42761527/article/details/105897465)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [k8s集成kubernetes-dashboard可视化界面](https://blog.csdn.net/crazy1013/article/details/126575777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晨犀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值