SpringBoot-yaml文件详解(三)

yaml简介

YMAL:以数据为中心,比json和xml更适合做配置文件.官网说yaml是一种标记语言,但又不是一种标记语言我们大家可以好好探讨一下.

yaml是不是一个标记语言,每个人都有自己独到的理解.

不妨我们来看看官方文档:https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/boot-features-external-config.html#boot-features-external-config-yaml

推荐使用properties或者YAML文件来完成配置,但是对于较复杂的数据结构来说,YAML又远远优于properties

yaml语法

-使用缩进表示层级关系.

-缩进时不允许使用tab只能使用空格.

-缩进的空格数目不重要,只要相同层级的元素左对齐就可以.

-大小写敏感.

1.yaml基本语法

 k:(空格) v : 表示一堆键值对(空格必须要有)

server:
  port: 8080

2.值得写入

字面量:普通的值(数字,字符串,布尔)

k: v:直接写值

默认不用加上双引号,或者单引号.

双引号""" 如果使用了双引号那么字符串的特殊字符会作为本身想表达的意思,就是我如果我们输入的值中含有"/n"那么输出就会换行.

单引号'' 如果使用了单引号那么字符串的特殊字符只是一个普通的字符串数据.

对象,map(属性和值)(键值对)

grilFriends:
      name: jdd
      age: 18

在下一行写属性和值得关系,注意缩进.

行内写法:

grilFriends: {name: jdd,age 18}

数组list,set

用-表示数组中的元素,

比如:

pets:
    - cat
    - pig
    - dog

行内写法:

pets: [cat,pig,dog]

yaml值得注入

构建实体类(pojo)

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
 private String name;
 private  int age;
 private boolean happy;
 private Date birth;
 private Map<String,Object> maps;
 private List<Object> lists;
 private Cat cat;

...
}

提供有参,无参,get,set方法,toString方法

注意:

要加上ConfigurationProperties这个注解.

这个注解的意思是:ConfigurationProperties告诉springboot将本类下的所有属性和配置文件中相关的属性进行绑定,将配置文件中配置的每一个属性的值,映射到组件中.

prefix:配置文件中那个文件下的属性进行一一映射.

Component注解:只有这个组件是容器中的组件 才会对ConfigurationPropertie供相应的功能.

yaml配置文件编写

Person:
  name: 七月的风
  age: 18
  happy: false
  birth: 1996/8/18
  maps: {k1: 爱,k2: 你}
  lists:
      - dog
      - pig
  cat:
      name: 小狗
      age: 2

测试类

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
    @Autowired
   Person person;

    @Test
    public void contextLoads() {

        System.out.println(person);
    }

}

这是spring提供给我们的测试类.

导入配置文件处理器以后配置文件就有提示了.

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

结果:

SpringBoot-yaml文件详解(三)