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

目录

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海绵hong

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

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

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

打赏作者

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

抵扣说明:

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

余额充值