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