Spring?IOC容器Bean管理XML注入集合類型屬性
一、定義數(shù)組、list、map、set類型屬性
創(chuàng)建類、定義數(shù)組、list、map、set類型屬性,生成對(duì)應(yīng)set方法。
package com.pingguo.spring5.collectiontype;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Student {
// 1. 數(shù)組類型的屬性
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;
}
public void test() {
System.out.println(Arrays.toString(courses));
System.out.println(list);
System.out.println(maps);
System.out.println(sets);
}
}二、配置文件中進(jìn)行對(duì)應(yīng)配置
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">
<!--集合類型屬性的注入-->
<bean id="student" class="com.pingguo.spring5.collectiontype.Student">
<!--數(shù)組類型的注入-->
<property name="courses">
<array>
<value>java開發(fā)課程</value>
<value>數(shù)據(jù)庫(kù)課程</value>
</array>
</property>
<!--list類型的注入-->
<property name="list">
<list>
<value>大周</value>
<value>小毛</value>
</list>
</property>
<!--map類型的注入-->
<property name="maps">
<map>
<entry key="班長(zhǎng)" value="胖洪"></entry>
<entry key="采購(gòu)" value="大周"></entry>
</map>
</property>
<!--set類型的注入-->
<property name="sets">
<set>
<value>帥胡</value>
<value>小姜</value>
</set>
</property>
</bean>
</beans>寫一個(gè)測(cè)試類,方便測(cè)試。
package com.pingguo.spring5.testdemo;
import com.pingguo.spring5.collectiontype.Student;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestSpring5Demo2 {
@Test
public void testCollection() {
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
Student student = context.getBean("student", Student.class);
student.test();
}
}運(yùn)行測(cè)試結(jié)果
[java開發(fā)課程, 數(shù)據(jù)庫(kù)課程]
[大周, 小毛]
{班長(zhǎng)=胖洪, 采購(gòu)=大周}
[帥胡, 小姜]
Process finished with exit code 0三、注入對(duì)象集合類型
在上面集合里的內(nèi)容都是用的 String,如果現(xiàn)在里面是對(duì)象,要如何注入?
ok,現(xiàn)在新增一個(gè)類 Course:
package com.pingguo.spring5.collectiontype;
public class Course {
private String course_name;
public void setCourse_name(String course_name) {
this.course_name = course_name;
}
@Override
public String toString() {
return "Course{" +
"course_name='" + course_name + '\'' +
'}';
}
}接下來(lái),在 Student 類里,加上這個(gè) Course 對(duì)象屬性,并且生成對(duì)應(yīng)的 set 方法:
... ...
public class Student {
... ...
// 5. 學(xué)生所學(xué)多門課程
private List<Course> courseList;
public void setCourseList(List<Course> courseList) {
this.courseList = courseList;
}
... ...
public void test() {
System.out.println(Arrays.toString(courses));
System.out.println(list);
System.out.println(maps);
System.out.println(sets);
System.out.println(courseList);
}
}操作配置文件。
在配置文件中可以新增多個(gè) course 對(duì)象。
<!--創(chuàng)建多個(gè) Course 對(duì)象-->
<bean id="course1" class="com.pingguo.spring5.collectiontype.Course">
<property name="course_name" value="胡氏面點(diǎn)課"></property>
</bean>
<bean id="course2" class="com.pingguo.spring5.collectiontype.Course">
<property name="course_name" value="毛氏面點(diǎn)課"></property>
</bean>然后在 注入的時(shí)候使用 ref 標(biāo)簽。
<!--注入list類型,值是對(duì)象-->
<property name="courseList">
<list>
<ref bean="course1"></ref>
<ref bean="course2"></ref>
</list>
</property>OK,現(xiàn)在運(yùn)行測(cè)試類,看下結(jié)果:
[java開發(fā)課程, 數(shù)據(jù)庫(kù)課程]
[大周, 小毛]
{班長(zhǎng)=胖洪, 采購(gòu)=大周}
[帥胡, 小姜]
[Course{course_name='胡氏面點(diǎn)課'}, Course{course_name='毛氏面點(diǎn)課'}]注入成功。
四、提取注入集合的部分
上面集合注入的地方,當(dāng)有多個(gè)值的時(shí)候感覺還是比較麻煩的,如果可以把這部分提取出來(lái)就更好了。
<property name="courseList">
<list>
<ref bean="course1"></ref>
<ref bean="course2"></ref>
</list>
</property>現(xiàn)在新建一個(gè)類 Book 來(lái)演示:
package com.pingguo.spring5.collectiontype;
import java.util.List;
public class Book {
private List<String> list;
public void setList(List<String> list) {
this.list = list;
}
public void test() {
System.out.println(list);
}
}1. 引入名稱空間 util
為了方便,新建一個(gè) bean2.xml,在里面先引入名稱空間 util。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
</beans>增加的地方:

2. 使用 util 標(biāo)簽完成集合注入的提取
以提取 list 集合為例。
<!--提取 list 集合類型屬性注入-->
<util:list id="bookList">
<value>mysql是怎樣運(yùn)行的</value>
<value>大數(shù)據(jù)測(cè)試</value>
<value>谷歌的軟件測(cè)試之道</value>
</util:list>然后,使用提取出來(lái)的集合,使用 ref 屬性。
<bean id="book" class="com.pingguo.spring5.collectiontype.Book">
<property name="list" ref="bookList"></property>
</bean>測(cè)試一下,新建一個(gè)測(cè)試方法 testCollection2() 。
@Test
public void testCollection2() {
ApplicationContext context =
new ClassPathXmlApplicationContext("bean2.xml");
Book book = context.getBean("book", Book.class);
book.test();
}運(yùn)行測(cè)試方法:
[mysql是怎樣運(yùn)行的, 大數(shù)據(jù)測(cè)試, 谷歌的軟件測(cè)試之道] Process finished with exit code 0
注入成功。
以上就是Spring IOC容器Bean管理XML注入集合類型屬性的詳細(xì)內(nèi)容,更多關(guān)于Spring IOC Bean注入XML集合的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot中的RestTemplate使用方法詳解
這篇文章主要介紹了SpringBoot中的RestTemplate使用方法詳解,為了方便使用,這里我封裝成一個(gè)工具類來(lái)靜態(tài)調(diào)用RestTemplate,基于SpringBoot2.4.2版本,需要的朋友可以參考下2024-01-01
Java不帶break將導(dǎo)致case穿透問(wèn)題
這篇文章主要介紹了Java不帶break將導(dǎo)致case穿透問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
如何使用RequestHeaders添加自定義參數(shù)
這篇文章主要介紹了使用RequestHeaders添加自定義參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-02-02
java easyPOI實(shí)現(xiàn)導(dǎo)出一對(duì)多數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了java如何利用easyPOI實(shí)現(xiàn)導(dǎo)出一對(duì)多數(shù)據(jù),并且可以設(shè)置邊框、字體和字體大小,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
Java字節(jié)流 從文件輸入輸出到文件過(guò)程解析
這篇文章主要介紹了Java字節(jié)流 從文件輸入 輸出到文件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
使用原生JDBC動(dòng)態(tài)解析并獲取表格列名和數(shù)據(jù)的方法
這篇文章主要介紹了使用原生JDBC動(dòng)態(tài)解析并獲取表格列名和數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
Mybatis基于MapperScan注解的動(dòng)態(tài)代理加載機(jī)制詳解
這篇文章主要介紹了Mybatis基于MapperScan注解的動(dòng)態(tài)代理加載機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-01-01

