SpringBoot--yaml配置

配置文件

springboot使用一个全局的配置文件,配置文件的名称是固定的

默认是这个东西:application.properties

语法:key=value

application.yml

语法:key:(空格)value

yaml概述

yaml仍是一种标记语言

它是以数据为中心,标记语法是次重点

传统XML



    8081

yaml


server:
  prot: 8080

你打一个回车下面就自动缩进了

基础语法

1、空格不能省略

2、以缩进来控制层级关系

3、属性和值的大小写很关键

普通的值:【数字、布尔值、字符串】

happy: false

注意:

“ ” 双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思;

'' 单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出

对象、map键值对:

name(对象名或map集合名):

          k1: v1

          k2: v2

name: {k1: v1,k2: v2}

两种写法

数组和集合或对象的书写有点差异

pets: 

        -pet1

        -pet2

pets: [pet1,pet2]

也是两种写法

那么yaml文件我们会写了如何注入到类中呢?

对于一个类而言,我么只需要给他添加注解就行了。

@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "person")
@Validated

中间的三个大家应该很熟悉吧,就是lombok的注解,就是给他添加有参无参构造器,和get、set,equals、toString、hashCode等方法。

最上面的就是把该类注解为一个spring的组件

@Con……这个注解是关键,prefix赋给yaml中的名字。

@Validated是yml做数据校验时的注解

有了这些注解,你就可以在测试类中调用了。

不过还需要手动到pom中添加支持:

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

不添加也能运行,就是该实体类上面会有报错提示。

这些是使用yml的用法

如果你要用properties的话。

注解只需要将

@ConfigurationProperties(prefix = "你在yml中起的名字")

修改为

@PropertySource(value = "classpath:文件名.properties")

然后对每个属性进行  @Value(${el表达式})

依次赋值,就很麻烦

然后yml位置文件的话,还可以使用占位符:

例如

${random.uuid}         # 随机uuid

${person.hello:other}        #person.hello存在的话(就是指在yaml文件中配置过)该值就是person.hello,不存在就是other,当然后面也可以拼接其他的字符串

总结对比

properties yaml
注解

@PropertySource(value = "classpath:person.properties")

并且需要@Value()

进行一个个赋值

@ConfigurationProperties(prefix = "person")
spel 支持 不支持
数据校验 不支持 支持(即增加一层过滤器验证)

复杂数据类型封装

不支持 支持(即可以封装对象)

                松散绑定              不支持                        支持

你可能感兴趣的:(Spring,Boot,spring,boot,java,spring)