yaml语法格式及@ConfigurationProperties

前言

yaml是一种以数据为中心的文件格式。相比于传统的json、xml格式的文件,它能够以更简洁的语法来记录数据。

基本用法

  1. yaml文件最基本的格式是键值对,即key: value。注意冒号和value直接必须有一个空格隔开。
  2. yaml的键值对是可以嵌套的,即value也可以是一个键值对

用法展示

  • 最简单的键值对

在yaml中普通字符串无需使用引号包裹。如果使用""包裹字符串,则串内支持转义;而使用’'包裹字符串,则不支持转义,所有字符将被当作普通字符

userName: root 
  • 嵌套的键值对
    yaml用空格缩进来控制层次(不允许使用tab键缩进),类似python
server:
  address: /
  port: 8000
  • 嵌套的键值对的行内写法
server: {address: /, port: 8000}
  • value是数组形式的写法
    有时候我们的值(value)并不止一个,需要写成数组,可以这样写:
    每一项之前加上 - 且需要用空格隔开,并保持相同的缩进
dogs:
 - dog1
 - dog2
 - dog3
  • 数组形式的行内写法
dogs: [dog1, dog2, dog3]

至此,yaml基本语法格式介绍完毕,下面将介绍如何在spring Boot中用注解读取yaml配置文件中的值,并将其封装到bean中

@ConfigurationProperties

使用该注解需要引入一个配置文件解析器:

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

下面结合一个简单的例子讲解基本用法

需求
现有一个名为Person的bean

public class Person {
    public String name;
    public Boolean Man;
    public Map<String, Object> mapTest;
    public List<String> listTest;
	//... ... 省略getter、setter
}

需要从配置文件中读取数据并封装到上述类中
那么配置文件可以这样写:

person:
 name: 李华
 Man: true
 mapTest:
   key1: value1
   key2: value2
 listTest:
  - list1
  - list2
  - list3

我们可以在Person类上标注@ConfigurationProperties(“person”), 再标注@Component将bean注入容器,计科将对应属性封装进Person组件

@ConfigurationProperties注解源码:

public @interface ConfigurationProperties {
    @AliasFor("prefix")
    String value() default "";

    @AliasFor("value")
    String prefix() default "";

    boolean ignoreInvalidFields() default false;

    boolean ignoreUnknownFields() default true;
}

它的value和prefix属性用于指定前缀,springBoot会读取前缀对应的value

**坑点:**从配置文件中读取自定义属性时,属性名不能以is开头,否则无法读取!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值