Spring DI(依賴注入)之多種類型屬性
1.前言
上一節,我們演示了如何使用 xml 文件配置,實現屬性的依賴注入。但是,注入的依賴類型只是作為演示使用的兩種,
而一個類中的屬性,可能會多種多樣。那么,xml 配置文件如何實現其余類型的屬性注入呢?
我們進入本節的學習內容。
2. 多種類型依賴注入
2.1屬性類型分類
- 基本類型包裝類,比如 Integer、Double、Boolean;
- 字符串類型,比如 String;
- 類類型,比如 其余定義的 java 類;
- 集合類型,比如 map、set、list 。
對于基本類型和字符串類型,在 xml 的配置文件中,通過 value 屬性即可以復制,我們上個案例已經測試過,這里不做贅述,主要演示集合類型的屬性注入測試。
2.2 工程搭建:
搭建工程,引入依賴,配置文件步驟省略,參考上一個章節的工程自行實現
1. 編寫一個java類,屬性為多種類型的集合
代碼如下:
public class User {
private Integer id;
private String name;
private Object [] array;
private List list;
private Map map;
//省略get和set方法
}
可以看到上面在同一個類中,我們定義了多個屬性, array 數組、list 和 map 集合。
2.編寫配置文件 屬性注入數組的依賴屬性
配置文件如下:
<!-- 數組的屬性注入 -->
<bean id="user" class="com.offcn.entity.User">
<property name="array">
<array>
<value>tom</value>
<value>jerry</value>
</array>
</property>
</bean>
配置解釋:
在上面的配置文件中:
- property 中的 name 是Java 類中數組的屬性名稱,用于 set 方法提供注入;
- array標簽是固定的,不能變化,表示屬性是一個數組,所以加在了 property 的屬性內部;
- value 表示數組中的值,因為數組可以存儲多個值,所以每一個數組的值,通過一個 value 標簽聲明。
測試結果:
代碼解釋
可以看到: 我們得到了 user 類中的 array 數組中在 xml 文件中配置的數組值,定義好的 tom 和 jerry。那么數組的依賴注入完成。
3.集合的屬性注入
改造 xml 的配置文件,實現 list 集合的屬性配置。
<!-- 集合的屬性注入 -->
<bean id="user" class="com.offcn.entity.User">
<property name="list">
<list>
<value>笑傲江湖</value>
<value>俠客行</value>
<value>連城訣</value>
</list>
</property>
</bean>
配置解釋:
在上面的配置文件中:
- property 中的 name 是 java 類中數組的屬性名稱 用于 set 方法提供注入;
- list 標簽是固定的,不能變化,表示屬性是一個 list 集合 ,所以加在了 property 的屬性內部;
- value 表示集合中的值,因為集合可以存儲多個值,所以每一個集合中的值,通過一個 value 標簽聲明。
測試結果如下:
同理:測試結果可以看到,list 集合中的三個數據都打印出來,那么 list 集合的 xml 依賴注入也搞定。
4.map集合的注入實現
繼續更改 xml 文件的配置 ,如下:
<bean id="user" class="com.offcn.entity.User">
<property name="map">
<map>
<entry key="小亮" value="小路"></entry>
<entry key="文同學" value="伊利姐"></entry>
</map>
</property>
</bean>
配置解釋:
在上面的配置文件中:
- property 中的 name 是Java 類中map的屬性名稱,用于 set 方法提供注入;
- map 標簽是固定的,不能變化,表示屬性是一個 map 集合 ,所以加在了 property 的屬性內部;
- entry 標簽固定表示 map 中的一對鍵值對,map 也可以存儲多對,所以 key 表示鍵值對的鍵,value表示鍵值對的值。
測試結果如下:
map 集合注入的效果我們也看到了…當然還有很多種類型,同理操作即可。
3.小結
本節重點依賴注入的 xml 實現多種屬性的注入。其實對于本節而言,重點還是理解 xml 文件依賴注入的方式,是通過 property 標簽,搭配各個標簽節點實現。
至于開發中使用方式,其實 xml文件的配置未免顯得麻煩了一點,所以下一節我們會講解通過注解方式進行依賴注入。
才須學也。非學無以廣才,非志無以成學。