轉自: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 類完成注入操作,如下圖所示:
在這里插入圖片描述
