轉自:https://blog.csdn.net/lzb348110175/article/details/105139372
我們已經知道 Spring Boot 中使用的是.properties
和 .yml
兩個格式的配置文件。下面就來介紹:Spring Boot 配置文件中的值,如何注入到我們自定義的 Java Bean 中。
(或者:Java Bean 如何獲取配置文件中的值來注入)
本文分別以 yml
和 properties
兩個格式的配置文件,來介紹如何將配置內容注入到 Java Bean類呢?如下分別為 Java Bean類,繼續往下看↓↓↓↓↓
JavaBean類
1.Person類
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
2.Address類
public class Address { private String province; private String distinct; private String county; /** * 此處省略get/set/toString() 方法 */ }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
1.yml 配置文件值注入
application.yml配置文件:
person: name: 扛麻袋的少年 age: 27 isManager: true birthday: 2020-03-27 map: k1: v1 k2: v2 list: - basketball - tennis - swim address: province: 山西省 distinct: 晉中市 county: 祁縣
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
步驟:
- 在Java Bean 類上,添加
@Component
注解。 - 同時,再添加
@ConfigurationProperties(prefix = “person”)
注解; - 在 pom.xml 中,導入配置文件處理器依賴。以后編寫
yml
、properties
配置文件,這些配置項就會有相對應的提示了。
<!--導入配置文件處理器,配置文件進行綁定就會有提示--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
- 1
- 2
- 3
- 4
- 5
- 6
解析:
- 添加
@Component
注解。切記:只有這個組件是容器中的組件,才能使用容器提供的@ConfigurationProperties
注解功能; @ConfigurationProperties 注解
:它會告訴 Spring Boot 將本類中的所有屬性和配置文件中相關的配置進行綁定;prefix = "person"
:告訴 Spring Boot 應該讀取配置文件中哪個下面的所有屬性進行一一映射;- 添加 Maven 依賴。
具體配置如圖:
測試:
我們在SpringBoot為我們提供的測試類中進行測試,查看配置文件內容是否已經成功注入到我們自定義的 Person 類中。如下圖所示,我們可以看到它已經幫我們注入到了 Person 類中。
2.properties 配置文件值注入
你會看到,我們在導入配置文件處理器
后,配置文件進行綁定就會有相對應的提示了。接下來我們編寫 properties 類型配置文件,來完成 peoperties 文件值得注入。
如下是一些 properties 類型
和 yml 類型
編寫上的一些區別。properties 配置文件值的注入部分,和 yml 配置文件值得注入步驟一模一樣,該加的注解、maven依賴都得一個不落的加上。
測試:
亂碼解決:
Setting------Editor------File Encodings 中,進行解決。如下圖所示↓↓↓↓↓
優先級測試:yml 和 properties 兩種同時寫,沒人會這么干的,哈哈