標籤:

Spring 中複雜類型的注入

看過之前文章的小夥伴們,肯定發現了一個非常嚴重的問題,就是,我要是有一個數組、集合或者一個類要注入的話,應該怎麼辦呢??

下面開始 Spring 中複雜類型的注入:

package bean;/** * 學生類 */public class Student { private String no;//學號 private String name;// 姓名 private Grade grade;// 所屬年級 public void setNo(String no) { this.no = no; } public void setName(String name) { this.name = name; } public void setGrade(Grade grade) { this.grade = grade; } @Override public String toString() { return "Student [no=" + no + ", name=" + name + ", grade=" + grade + "]"; }}

package bean;/** * 年級類 */public class Grade { private int gid;//年級編號 private String gname;//年級名稱 public void setGid(int gid) { this.gid = gid; } public void setGname(String gname) { this.gname = gname; } @Override public String toString() { return "Grade [gid=" + gid + ", gname=" + gname + "]"; }}

1.注入類(一個 bean )

下面還是用 p 命名空間注入,看起來代碼比較少

<!-- 創建兩個年級 bean --><bean id="firstGrade" class="bean.Grade" p:gid="1" p:gname="一年級" /><bean id="secondGrade" class="bean.Grade" p:gid="2" p:gname="二年級" /><!-- 創建一個學生 bean --><!-- p:grade-ref 其中 ref 表示引用,當前已經配置好的 bean 的 id --><bean id="zxh" class="bean.Student" p:grade-ref="firstGrade" p:no="CHB12345" p:name="張小盒" />

運行結果如下:

沒有問題!!

2. list 集合、數組注入

首先需要在 Student 類中新增屬性,這裡,新增的是 scores 分數

這裡用的是數組

applicationContext.xml 文件中,配置這樣一個 bean

<!-- 創建一個 bean,給這個類中的數組賦值 --><bean id="list" class="bean.Student"> <!-- 給 scores 屬性賦值 --> <property name="scores"> <!-- 該屬性是數組類型 --> <array> <value>56</value> <value>89</value> <value>75</value> <value>26</value> <value>55</value> <value>68</value> </array> </property></bean>

測試類:

結果:

下面進行 List<Class> 注入的示例:

在 Grade 類中添加屬性 students,一個年級中肯定有多個學生

毫無疑問的在 Grade 類中也要為 students 屬性添加 setter 方法

兩個類的 toString() 方法需要修改一下:

為了防止遞歸調用,把 Student 類中 toString() 方法中的 grade 的輸出刪除,加上
換行符,方便查看結果

在 Grade 類中 toString() 方法中,新增輸出 students

下面進行 applicationContext.xml 文件的配置

<bean id="lb" class="bean.Student" p:name="李白" p:no="CHB00000" /><bean id="grade" class="bean.Grade" p:gid="3" p:gname="三年級"> <!-- 給 students 屬性賦值 --> <property name="students"> <!-- 該屬性的類型為 list --> <list> <!-- 創建內部 bean --> <bean class="bean.Student" p:name="王小二" p:no="CHB11111" /> <bean class="bean.Student" p:name="張小三" p:no="CHB22222" /> <bean class="bean.Student" p:name="李小四" p:no="CHB33333" /> <bean class="bean.Student" p:name="何小五" p:no="CHB44444" /> <!-- 也可以用 ref 來引用外部類 --> <ref bean="lb" /> </list> </property></bean>

輸出結果...

沒有問題!!!

3. Map 集合注入

為了這個例子呢,咱們需要在 Student 類中新增屬性 classmate,Map<String,Student> 類型;並且來個 getter 和 setter

String 用來放名字,Student 用來放這個同學的所有信息

applicationContext.xml 配置如下

還是用的之前創建的 bean....

測試類:

結果,肯定還是和我們想的一致嘍

以上就是 複雜類型注入 的例子,有疑問,請留言!!

有不對的地方,還請多多提醒!!

轉載請說明出處,謝謝!!

推薦閱讀:

Spring(2):IOC註解操作
Spring當中有哪些註解可以使用?
快速了解spring事務七種傳播方式、事務的4種隔離級別、臟讀、重複讀、幻讀;
Spring 數據訪問(DAO層) 總結

TAG:Spring |