转自:https://blog.csdn.net/lzb348110175/article/details/105147070/
我们了解完 @ConfigurationProperties 注解的使用,知道了它可以将 application.yml 或 application.properties 主配置文件中的属性值与 Java Bean 对应属性进行注入。
此时就引出另一个问题,如果所有属性值都配置在 主配置文件 中,主配置文件就会越来越庞大,这显然是不可以的。此时我们可以使用 Spring 为我们提供的 @PropertySource 注解,去加载指定的配置文件,然后结合 @ConfigurationProperties 注解,便能够实现指定配置文件与 Java Bean 的注入操作。
接下来,我们就来用一个实例来了解一下。如何使用 @ PropertySource 注解来加载指定配置文件,实现配置文件与Java Bean 类的注入。
@PropertySource注解的使用 注意:该注解仅适用于properties 类型配置文件
我们新建一个 person.properties 配置文件,用来存放 Person 类的配置信息。接下来使用 @ PropertySource 注解,来实现通过读取该配置,实现配置文件与 Java Bean 类的注入操作。
//person.properties
person.name=扛麻袋的少年
person.age=27
person.manager=true
person.birthday=2020/03/27
person.map.k1=v1
person.map.k2=v2
person.list=basketball,tennis,swim
person.address.province=山西省
person.address.distinct=晋中市
person.address.county=祁县
1
2
3
4
5
6
7
8
9
10
11
javaBean类
添加 @PropertySource(value = {“classpath:person.properties”})注解,通过 value 属性让它去加载指定路径配置文件。代码如下:
@Component
@ConfigurationProperties(prefix = "person")
@PropertySource(value = {"classpath:person.properties"})//读取指定路径配置文件
public class Person {
private String name;
private int age;
private boolean isManager;
private Date birthday;
private Map<String, Object> map;
private List<String> list;
private Address address;
/**
* 省略get/set/toString() 方法
*/
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
测试:
使用 SpringBoot 为我们提供的测试环境,来进行以上代码的测试。测试结果显示,它可以实现 person.properties 文件中的配置信息与自定义的 Person 类完成注入操作,如下图所示:
在这里插入图片描述