SringBoot之yaml语法

------------恢复内容开始------------
SpringBoot之yaml语法 1、配置文件 官方配置文档太多了,根本记不住!
怎么办呐-->了解原理
SpringBoot使用了一个全局配置文件,且配置文件的名称是固定的:

  • application.properties
    • 语法结构:key=value
  • application.yaml
    • 语法结构:key: 空格 value
2、YAML YAML(/?j?m?l/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列化的格式。
YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。(来自于百度百科词条解释)
YAML和XML的区别(以配置端口号为例):
YAML配置:
server: address: 8081

XML配置 :
8081

2.1、YAML语法
基础语法--> key:value
#普通的key value键值对 name: liberty#对象 student: name: liberty age: 20#对象的行内写法 student: {name: liberty,age: 20}#数组 pets: - dog - cat - pig#数组的行内写法 pets: [dog,cat,pig]

注意:yaml中对于空格的要求极其严格
student: name: liberty age:20 (age前面加一个空格的话相当于age是name下面的属性)student: name: liberty age: 20 (这样相当于三个对象)

2.2、注入配置文件
程序实现
2.2.1、将默认的application.properties后缀改为yaml SringBoot之yaml语法
文章图片

2.2.2、根据提示打开文档导入配置文件处理器 SringBoot之yaml语法
文章图片

org.springframework.boot spring-boot-configuration-processor true

2.2.3、编写yaml配置文件 SringBoot之yaml语法
文章图片

2.2.4、在SpringBoot的主程序的同级目录下建包(必须这样,约定大于配置) SringBoot之yaml语法
文章图片

package com.liberty.pojo; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component /** * 注解意思是将此添加到SpringBoot组件里面 */ @ConfigurationProperties(prefix = "person") /** * ConfigurationProperties告诉SpringBoot将本类中的所有属性和配置文件中相关配置进行绑定 * 参数prefix = "person" 将配置文件中的person下面的所有属性一一对应 */ public class Person { private String name; private Integer age; @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; }public String getName() { return name; }public void setName(String name) { this.name = name; }public Integer getAge() { return age; }public void setAge(Integer age) { this.age = age; }public Person(String name, Integer age) { this.name = name; this.age = age; }public Person() { } }

2.2.5、测试无误后,在测试单元中进行测试,看看是否注入成功
package com.liberty; import com.liberty.pojo.Person; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class Demo02ApplicationTests { //自动装配 @Autowired Person person; @Test void contextLoads() { System.out.println(person); }}

【SringBoot之yaml语法】SringBoot之yaml语法
文章图片

------------恢复内容结束------------

    推荐阅读