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

news2024/9/21 17:04:39

目录

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

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

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

相关文章

每日一练2——C++排序子序列问题倒置字符串问题

文章目录排序子序列问题思路&#xff1a;代码&#xff1a;倒置字符串思路&#xff1a;方法一&#xff1a;代码&#xff1a;方法二&#xff1a;代码&#xff1a;排序子序列问题 题目链接 这道题题意不难理解&#xff0c;但是想写对还是有很多细节的。 本题要求解的是排序子序列…

python之正则表达式【简化版】

大家好&#xff0c;我们今天说一说正则表达式&#xff0c;在之前我们也介绍了关于正则表达式&#xff0c;今天&#xff0c;我们来深入的了解一下。我们知道正则表达式是处理字符串的强大工具&#xff0c;它有自己的语法结构&#xff0c;什么匹配啊&#xff0c;都不算什么。 正…

JavaIO流:BIO梳理

BIO&#xff08;blocking I/O&#xff09; &#xff1a; 同步阻塞&#xff0c;服务器实现模式为一个连接一个线程&#xff0c;即客户端有连接请求时服务器端就需要启动一个线程进行处理&#xff0c;如果这个连接不做任何事情会造成不必要的线程开销&#xff0c;可以通过线程池机…

Java8新特性 Stream流

Stream流 在Java 8中&#xff0c;得益于Lambda所带来的函数式编程&#xff0c;引入了一个全新的Stream概念&#xff0c;用于解决已有集合类库既有的弊端。 传统集合的多步遍历代码几乎所有的集合&#xff08;如 Collection 接口或 Map 接口等&#xff09;都支持直接或间接的遍…

我这样写代码,比直接使用 MyBatis 效率提高了 100 倍

对一个 Java 后端程序员来说&#xff0c;mybatis、hibernate、data-jdbc 等都是我们常用的 ORM 框架。它们有时候很好用&#xff0c;比如简单的 CRUD&#xff0c;事务的支持都非常棒。但有时候用起来也非常繁琐&#xff0c;比如接下来我们要聊到的一个常见的开发需求&#xff0…

【知识图谱论文】调整元知识图信息以在少样本关系上进行多跳推理

文章题目&#xff1a;Adapting Meta Knowledge Graph Information for Multi-Hop Reasoning over Few-Shot Relations时间&#xff1a;2019 摘要 多跳知识图 (KG) 推理是一种有效且可解释的方法&#xff0c;用于在查询回答 (QA) 任务中通过推理路径预测目标实体。 大多数以前…

做交互设计都有哪些需要掌握的思维方式

由于目前的环境对这个细分领域仍然缺乏了解&#xff0c;我希望在这篇文章中写一些交互设计所需的思维方式。 ​ 1.可用性优先&#xff0c;视觉靠边 一个功能个功能应该能够使用和使用&#xff0c;以便有人关心它是否好看。审美挑剔的用户实际上比你想象的要少得多。当然&#…

机械工程基础知识点汇总

第一章 常用机构 一、零件、构件、部件 零件&#xff0c;是指机器中每一个最基本的制造单元体。 在机器中&#xff0c;由一个或几个零件所构成的运动单元体&#xff0c;称为构件。 部件&#xff0c;指机器中由若干零件所组成的装配单元体。 二、机器、机构、机械 机器具有以下特…

智能捡乒乓球机器人

本文素材来源于物理与电子电气工程学院 作者&#xff1a;丁文龙 、王小军、任剑杰、张钊铭 指导老师&#xff1a;康彩 一、项目简介 随着人们对机器人技术智能化本质认识的加深&#xff0c;机器人技术开始源源不断地向人类活动的各个领域渗透。在这其中&#xff0c;服务机器人…

数字图像处理(十二)最大熵算法

文章目录前言一、熵是什么&#xff1f;1.信息量如何计算&#xff1f;2.熵如何计算&#xff1f;二、最大熵方法1.设计思想2.算法步骤3.C代码4.实验结果参考资料前言 在图像分析中&#xff0c;通常需要将所关心的目标从图像中提取出来&#xff0c;这种从图像中某个特定区域与其他…

JAVA中的集合类型的理解及应用

目录 概述 List和Queue Map和Set HashTable和HashMap的区别 Queue和Deque BlockingQueue 并发集合 概述 写程序免不了处理一些批量数据&#xff0c;不同数据结构和算法&#xff0c;会带来不同的性能效果。大学的计算机课程中就有一门叫《数据结构》的课程&#xff0c;这门…

总结我的 MySQL 学习历程,给有需要的人看

作者| 慕课网精英讲师 马听 你好&#xff0c;我是马听&#xff0c;现在是某零售公司的 MySQL DBA&#xff0c;身处一线的我表示有很多话要讲。 我的MySQL学习历程 在我大三的时候&#xff0c;就开始接触到 MySQL 了&#xff0c;当时我也是从最基础的 MySQL 知识&#xff08;…

6、项目第六阶段——用户名登录显示和注册验证码

第六阶段——用户名登录显示和注册验证码 1、登陆—显示用户名 UserServlet 程序中保存用户登录的信息 UserServlet程序中&#xff1a; //保存用户登录信息到Session域中 req.getSession().setAttribute("user",loginUser);修改 login_succuess_menu.jsp&#xf…

2019 国际大学生程序设计竞赛(ICPC)亚洲区域赛(银川) 7题

文章目录N.Fibonacci SequenceB.So EasyI.Base62G.Pot!!F.Function!K.Largest Common Submatrix补题链接&#xff1a;https://codeforces.com/gym/104021 难得VP打出这么好的成绩&#xff0c;虽然是有争议的西部枢纽银川站&#xff0c;虽然没能早生几年。。。。 N.Fibonacci Se…

【数据结构】基础:堆

【数据结构】基础&#xff1a;堆 摘要&#xff1a;本文主要介绍数据结构堆&#xff0c;分别介绍其概念、实现和应用。 文章目录【数据结构】基础&#xff1a;堆一、概述1.1 概念1.2 性质二、实现2.1 定义2.2 初始化与销毁2.3 入堆2.4 出堆2.5 堆的创建2.6 其他三、应用3.1 堆排…

《前端》css总结(下)

文章目录元素展示格式displaywhite-spacetext-overflowoverflow内边距和外边距marginpadding盒子模型box-sizing位置position&#xff1a;用于指定一个元素在文档中的定位方式浮动flex布局flex-directionflex-wrapflex-flowjustify-contentalign-itemsalign-contentorderflex-g…

你最少用几行代码实现深拷贝?

问题分析 深拷贝 自然是 相对 浅拷贝 而言的。 我们都知道 引用数据类型 变量存储的是数据的引用&#xff0c;就是一个指向内存空间的指针&#xff0c; 所以如果我们像赋值简单数据类型那样的方式赋值的话&#xff0c;其实只能复制一个指针引用&#xff0c;并没有实现真正的数…

计算机组成原理4小时速成:存储器,内存ROM,RAM,Cache,高速缓存cache,外存,缓存命中率,效率

计算机组成原理4小时速成&#xff1a;存储器&#xff0c;内存ROM,RAM,Cache&#xff0c;高速缓存cache&#xff0c;外存&#xff0c;缓存命中率&#xff0c;效率 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法…

MYSQL事务原理分析

目录事务是什么ACID特性原子性&#xff08;A&#xff09;隔离性&#xff08;I&#xff09;持久性&#xff08;D&#xff09;一致性&#xff08;C&#xff09;隔离级别简介有些什么READ UNCOMMITTED&#xff08;读未提交&#xff09;READ COMMITTED&#xff08;读已提交&#xf…

【17】Java常见的面试题汇总(设计模式)

目录 1. 说一下你熟悉的设计模式&#xff1f; 2. 简单工厂和抽象工厂有什么区别&#xff1f; 1. 说一下你熟悉的设计模式&#xff1f; 单例模式&#xff1a;保证被创建一次&#xff0c;节省系统开销。 工厂模式&#xff08;简单工厂、抽象工厂&#xff09;&#xff1a;解耦…