06 spring boot yaml语法和demo 范例 例子
github地址包含文档和demo
总览:
0 配置文件介绍
1 2 基本语法 字符串 对象(map) list的写法在配置文件中的写法
3 如何通过配置文件,将值注入进去一个对象中,需要添加什么依赖包configuration-processor,
配置文件
Spring boot使用两种全局配置文件
Application.properties
Application.yml
这俩文件的名字都是固定的
配置文件的作用:修改spring boot配置的默认值。
YAML YAML aint markup language
这个不是一个标记语言 或者说是一个标记语言无所谓的。
以数据为中心,比json xml更适合做配置文件。
Application.yml跟application.properties在同一个目录之下,都属于resources
比如用application.yml配置端口
注意:这类的application.yml的文件名打错了,注意要打对。
1 基本语法
K: v 表示一对键值对,冒号后面必须有空格
用所进来表示层级关系;属性和值都是大小写敏感的;跟python是一样的语法
2 值得写法
2.1字面值:数字 字符串 布尔值
举例 字符串的写法 字符串的写法默认是不需要加上单双引号的
Name: zhangsanlisi
加双引号:不会转义特殊字符 name:”zhangsan \n lisi”
加单引号:会转义特殊字符
2.2 对象
对象的写法就是在k 的下一行直接写该对象的属性。
例如:
Friends:
Age: 12
Name: sjh
还可以改成行内写法:friends: {name: sjh,age: 12}
2.3 数组
写法就是加横杠
Pets:
- Cat
- Dog
- Pig
也可以是行内写法pets: [cat,dog,pig]
3 实战演练,将配置文件中的值,绑定进去bean中,那就很强。
- package com.example.springbootyamltest.bean;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- public class Person {
- private String name;
- private Integer age;
- private boolean boss;
- private Date birth;
- private Map<String,Object> maps;
- private List<Object> lists;
- private Dog dog;
- @Override
- public String toString() {
- return "Person{" +
- "name='" + name + '\'' +
- ", age=" + age +
- ", boss=" + boss +
- ", birth=" + birth +
- ", maps=" + maps +
- ", lists=" + lists +
- ", dog=" + dog +
- '}';
- }
- }
这是application.yml配置文件
- server:
- port: 8081
- person:
- name: gx
- age: 12
- boss: true
- birth: 2020/02/02
- maps: {k1: v1,k2: valsss1}
- list:
- - lisi
- - zhaoliu
- dog:
- name: tom
- age: 11
Person.java 文件
- package com.example.springbootyamltest.bean;
- /*
- * 将配置文件中每一个值都隐射到这个类中
- * 结合一个注解ConfigurationProperties 这个注解告诉spring boot 类中所有的属性,和配置文件中的一一绑定
- * --prefix前缀的意思是,我绑定配置文件中哪一个前缀开头的配置
- * 如果遇到提示:spring boot configuration annotation processor not found in classpath 就是没有依赖配置处理包
- * 这个包可以提供配置时候给出提示
- *
- * 只有说这个Person组件是容器中的组件,才可以提供容器提供的功能configuratonproperties 所以加上@component注解
- * */
- @Component
- @ConfigurationProperties(prefix = "person")
- public class Person {
- private String name;
- private Integer age;
- private boolean boss;
- private Date birth;
- private Map<String,Object> maps;
- private List<Object> lists;
- private Dog dog;
- }
Test类
- package com.example.springbootyamltest;
- import com.example.springbootyamltest.bean.Person;
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- /*
- *Sprning boot单元测试功能
- *可以再测试期间很方便的类似编码一样进行自动注入的功能
- * */
- @SpringBootTest
- class SpringbootYamlTestApplicationTests {
- @Autowired
- Person person;
- @Test
- void contextLoads() {
- System.out.println(person);
- }
- }