Spring Boot读取YAML参数两种方式

上一篇文章,我们讲到如何定义YAML配置文件,本节我们讲解如何在Spring Boot项目运行过程中读取/绑定YAML定义的变量。

一、使用@Value注解读取配置

通过@Value注解将person.name属性的值绑定到personName成员变量上面。

@RestController
public class HelloController {

    @Value("${person.name}")
    private String personName;

}

二、使用@ConfigurationProperties读取配置

上节定义的YAML格式如下:

person:
  name: Tom
  age: 18
  hobby:
    - basketball
    - football
    - swimming
  friends:
    - name: Mark
      age: 17
    - name: Louis
      age: 19

下面代码用于读取上面的YAML配置内容

@Data
@Component
@ConfigurationProperties(prefix = "person") //prefix: 代表前缀
public class Person {
    private String name; // 读取person.name
    private Integer age; // 读取person.age
    private String[] hobby; //读取所有兴趣爱好
    private List<Friend> friends; //读取两位好朋友的信息
}
@Data
public class Friend {
    private String name;
    private Integer age;
}

编写测试代码:

访问:http://localhost:8888/hello?name=yiidian,在控制台输出结果为:

Person(name=Tom, age=18, hobby=[basketball, football, swimming], friends=[Friend(name=Mark, age=17), Friend(name=Louis, age=19)])

三、@Value和@ConfigurationProperties比较

  @ConfigurationProperties @Value
功能 批量注入属性到java类 一个个属性指定注入
松散语法绑定 支持 不支持
复杂数据类型(对象、数组) 支持 不支持
JSR303数据校验 支持 不支持
SpEL 不支持 支持

 

下载本文源码:springboot-demo 

一点教程,一个分享编程知识的公众号。跟着站长一起学习和进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「一点教程」,你已然超越了90%的程序员!

一点教程二维码