# YML 文件格式是 YAML(YAML Aint Markup Language)编写的文件格式,YAML 是一种直观的能够
# 被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持 YAML 库
# 的不同的编程语言程序导入,比如 C/C++、Ruby、Python、Java、C#、PHP等。YML 是以数据为核心的,
# 比传统的 XML 方式更加简洁。
# YML 文件的扩展名可以是 .yml,或者 .yaml。

一、yml 配置文件的语法:

1、配置普通数据:

yaml配置文件kubernetes yaml配置文件的内容是_List

2、配置对象数据:

yaml配置文件kubernetes yaml配置文件的内容是_List_02

yaml配置文件kubernetes yaml配置文件的内容是_配置文件_03

3、配置 List 集合数据:List 中存放的是 普通字符串

yaml配置文件kubernetes yaml配置文件的内容是_List_04

yaml配置文件kubernetes yaml配置文件的内容是_List_05

4、配置 List 集合数据:List 中存放的是 对象

yaml配置文件kubernetes yaml配置文件的内容是_yaml配置文件kubernetes_06

 

二、在代码中读取 yml 配置文件中的数据:有两种方式

1、使用 @value 注解方式:

     优点:可以更加精确的去匹配对应的配置数据;

     缺点:如果配置数据比较多,代码里就需要写很多个属性去接收;

     1.1、读取配置的普通数据:

yaml配置文件kubernetes yaml配置文件的内容是_数据_07

yaml配置文件kubernetes yaml配置文件的内容是_配置文件_08

yaml配置文件kubernetes yaml配置文件的内容是_List_09

     1.2、读取配置的对象数据:

yaml配置文件kubernetes yaml配置文件的内容是_数据_10

yaml配置文件kubernetes yaml配置文件的内容是_List_11

yaml配置文件kubernetes yaml配置文件的内容是_yaml配置文件kubernetes_12

     1.3、读取配置的集合数据:上面配置集合数据的语法如下图:但是不知道怎么读取?

老师没讲,网上也没查到资料!!如果有谁知道的,麻烦告知一下,谢谢!!!

yaml配置文件kubernetes yaml配置文件的内容是_List_04

yaml配置文件kubernetes yaml配置文件的内容是_数据_14

上面是我用 @Value 注解读取 List 配置的代码,但是一直报如下错误:

yaml配置文件kubernetes yaml配置文件的内容是_数据_15

虽然用 @Value 注解不知道怎么读取 List 集合数据;

但是用下面的 @ConfigurationProperties 方法可以读取;

2、使用 @ConfigurationProperties 注解方式:

用法:@ConfigurationProperties(prefix = "配置对象数据的 key");

要读取的配置文件:

yaml配置文件kubernetes yaml配置文件的内容是_数据_10

学习资料上老师的用法是下面这样的:

将 @ConfigurationProperties 注解直接用在 Controller 的类上,然后 prefix 的值为配置对象数据的 key,然后 Controller 中的属性和 配置对象数据的属性 一一对应,Controller 中的属性还要添加 getter/setter 方法,如下图所示:

yaml配置文件kubernetes yaml配置文件的内容是_数据_17

但是,实际测试发现,@ConfigurationProperties 配置会报一个错误:

yaml配置文件kubernetes yaml配置文件的内容是_配置文件_18

在网上查了一些资料,最终总结使用 @ConfigurationProperties 的方法为:

2.1、根据配置文件中的对象数据 创建一个对应的 JavaBean 对象:

yaml配置文件kubernetes yaml配置文件的内容是_yaml配置文件kubernetes_19

2.2、创建好上面的 Bean 对象后,你可能会发现文件最上面有一个警告,如下图所示:

yaml配置文件kubernetes yaml配置文件的内容是_配置文件_20

测试发现,这个警告并不影响程序的正常运行,不用管它也可以;

这个警告的意思是“在类路径下(classpath)没有找到 SpringBoot 的配置注释处理器”;

如果想消除这个警告,可以点击警告右边的 Open Documentation...,点击之后会自动用浏览器打开一个网址,如下所示:(我用的 2.2.2 版本的 Springboot 不能打开,换成 2.0.1 版本的 Springboot 就能够打开);把下面圈起来的部分添加到 pom.xml 中就可以了;

yaml配置文件kubernetes yaml配置文件的内容是_List_21

yaml配置文件kubernetes yaml配置文件的内容是_配置文件_22

 

既然,不管有没有配置 @ConfigurationProperties 处理器,程序都能运行,那么为什么还要配置这个处理器呢?

因为,我们程序开发中有时候是先创建 JavaBean,然后再根据 Bean 中的属性去写配置文件;在没配置处理器的情况下,我们写配置都要自己一个一个写;但是如果我们配置了处理器,我们在写配置文件的时候就会自动弹出提示信息,如下所示:

 

yaml配置文件kubernetes yaml配置文件的内容是_yaml配置文件kubernetes_23

2.3、上面创建的 Bean 对象已经能够读取配置文件中的数据了,下面创建一个 Controller,测试 Bean 对象读取的数据:

yaml配置文件kubernetes yaml配置文件的内容是_List_24

yaml配置文件kubernetes yaml配置文件的内容是_配置文件_25

注意:上面创建的 JavaBean 对象,需要给属性添加 getter/setter 方法,比较麻烦,我们可以使用 lombok 插件,通过注解的方式,代替 getter/setter 方法;

通过 idea 工具下载 lombok 插件,然后在 pom.xml 中添加依赖:

yaml配置文件kubernetes yaml配置文件的内容是_数据_26

修改 JavaBean 对象如下:

yaml配置文件kubernetes yaml配置文件的内容是_yaml配置文件kubernetes_27

lombok 插件的常用注解: 

yaml配置文件kubernetes yaml配置文件的内容是_yaml配置文件kubernetes_28

 

使用 @ConfigurationProperties 读取配置的 List 集合数据:

配置的 List 集合数据如下:

yaml配置文件kubernetes yaml配置文件的内容是_配置文件_29

根据配置数据创建 JavaBean 对象如下:

yaml配置文件kubernetes yaml配置文件的内容是_数据_30

测试的 Controller 如下:

测试结果如下:

yaml配置文件kubernetes yaml配置文件的内容是_List_31