spring——Spring 注入集合(轉載)
阿新 • • 發佈:2022-04-17
我們還可以在 Bean 標籤下的 <property> 元素中,使用以下元素配置 Java 集合型別的屬性和引數,例如 List、Set、Map 以及 Properties 等。
標籤 | 說明 |
---|---|
<list> | 用於注入 list 型別的值,允許重複 |
<set> | 用於注入 set 型別的值,不允許重複 |
<map> | 用於注入 key-value 的集合,其中 key 和 value 都可以是任意型別 |
<props> | 用於注入 key-value 的集合,其中 key 和 value 都是字串型別 |
示例 1:在集合中設定普通型別的值
下面我們通過一個例項,演示下如何注入集合型別的屬性和引數。
1. 參考《第一個 Spring 程式》,新建一個名為 my-spring-demo4 的 Java 專案。
2. 在 net.biancheng.c 包下,建立一個名為 JavaCollection 的類,程式碼如下。
package net.biancheng.c; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Set; public class JavaCollection { //1 陣列型別屬性 private String[] courses; //2 list 集合型別屬性 private List<String> list; //3 map 集合型別屬性 private Map<String, String> maps; //4 set 集合型別屬性 private Set<String> sets; public void setCourses(String[] courses) { this.courses = courses; } public void setList(List<String> list) { this.list = list; } public void setMaps(Map<String, String> maps) { this.maps = maps; } public void setSets(Set<String> sets) { this.sets = sets; } @Override public String toString() { return "JavaCollection{" + "courses=" + Arrays.toString(courses) + ", list=" + list + ", maps=" + maps + ", sets=" + sets + '}'; } }
2. 在 src 目錄下建立 Spring 配置檔案 Beans.xml,配置如下。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="javaCollection" class="net.biancheng.c.JavaCollection"> <!--陣列型別--> <property name="courses"> <array> <value>Java</value> <value>PHP</value> <value>C 語言</value> </array> </property> <!--List 型別--> <property name="list"> <list> <value>張三</value> <value>李四</value> <value>王五</value> <value>趙六</value> </list> </property> <!--Map 型別--> <property name="maps"> <map> <entry key="JAVA" value="java"></entry> <entry key="PHP" value="php"></entry> </map> </property> <!--Set 型別--> <property name="sets"> <set> <value>MySQL</value> <value>Redis</value> </set> </property> </bean> </beans>
============================================================
示例 2:在集合中設定物件型別的值
在上面的示例中,都是在集合中通過 value 屬性設定的普通型別的值,我們還可以通過 ref 屬性在注入到 Bean 的集合中設定物件型別的值。
1. 在 my-spring-demo4 專案的 net.biancheng.c 包中,建立一個名為 Course 的類,程式碼如下。
package net.biancheng.c; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class Course { private static final Log LOGGER = LogFactory.getLog(Course.class); //課程編號 private Integer courseId; //課程名稱 private String courseName; public void setCourseId(Integer courseId) { this.courseId = courseId; } public void setCourseName(String courseName) { this.courseName = courseName; } @Override public String toString() { return "Course{" + "courseId=" + courseId + ", courseName='" + courseName + '\'' + '}'; } }
2. 將 JavaCollection 中的程式碼修改成以下形式。
package net.biancheng.c; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.Set; public class JavaCollection { //1 陣列型別屬性 private Course[] courses; //2 list 集合型別屬性 private List<String> list; //3 map 集合型別屬性 private Map<String, String> maps; //4 set 集合型別屬性 private Set<String> sets; public void setCourses(Course[] courses) { this.courses = courses; } public void setList(List<String> list) { this.list = list; } public void setMaps(Map<String, String> maps) { this.maps = maps; } public void setSets(Set<String> sets) { this.sets = sets; } @Override public String toString() { return "JavaCollection{" + "courses=" + Arrays.toString(courses) + ", list=" + list + ", maps=" + maps + ", sets=" + sets + '}'; } }
3. 將 Beans.xml 中配置修改成以下內容。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="course" class="net.biancheng.c.Course"> <property name="courseId" value="1"></property> <property name="courseName" value="Java課程"></property> </bean> <bean id="course2" class="net.biancheng.c.Course"> <property name="courseId" value="2"></property> <property name="courseName" value="PHP課程"></property> </bean> <bean id="course3" class="net.biancheng.c.Course"> <property name="courseId" value="3"></property> <property name="courseName" value="C語言課程"></property> </bean> <bean id="javaCollection" class="net.biancheng.c.JavaCollection"> <!--陣列型別--> <property name="courses"> <array> <ref bean="course"></ref> <ref bean="course2"></ref> <ref bean="course3"></ref> </array> </property> <!--List 型別--> <property name="list"> <list> <value>張三</value> <value>李四</value> <value>王五</value> <value>趙六</value> </list> </property> <!--Map 型別--> <property name="maps"> <map> <entry key="JAVA" value="java"></entry> <entry key="PHP" value="php"></entry> </map> </property> <!--Set 型別--> <property name="sets"> <set> <value>MySQL</value> <value>Redis</value> </set> </property> </bean> </beans>