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%的程序员!