[Spring5]IOC容器_Bean管理XML方式_注入集合类型属性
Posted 唐火
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Spring5]IOC容器_Bean管理XML方式_注入集合类型属性相关的知识,希望对你有一定的参考价值。
xml注入集合属性
1.注入数组类型属性
2.注入List集合类型属性
3.注入Map集合类型属性
(1)创建类,定义数组,list,map,set类型属性,生成对应set方法
package com.atguigu.collectiontype;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Stu
//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 setSets(Set<String> sets)
this.sets = sets;
public void setList(List<String> list)
this.list = list;
public void setMaps(Map<String, String> maps)
this.maps = maps;
public void setCourses(String[] courses)
this.courses = courses;
public void test()
System.out.println(Arrays.toString(courses));
System.out.println(list);
System.out.println(maps);
System.out.println(sets);
(2)在spring配置文件中进行配置
<?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">
<!--1.集合类型属性注入-->
<bean id = "stu" class = "com.atguigu.collectiontype.Stu">
<!--数组类型属性注入-->
<property name="courses">
<array>
<value>java课程</value>
<value>数据库课程</value>
</array>
</property>
<!--list类型属性注入-->
<property name="list">
<list>
<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>
package com.atguigu.test;
import com.atguigu.collectiontype.Stu;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testCollection
@Test
public void testCollection()
ApplicationContext context = new ClassPathXmlApplicationContext("bean5.xml");
Stu stu = context.getBean("stu", Stu.class);
stu.test();
在集合里面设置对象类型值
package com.atguigu.collectiontype;
public class Course
private String cname;//课程名称
public void setCname(String cname)
this.cname = cname;
@Override
public String toString()
return "Course" +
"cname='" + cname + '\\'' +
'';
package com.atguigu.collectiontype;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Stu
//1.数组类型属性
private String[] courses;
//2.List集合类型属性
private List<String> list;
//3.map集合类型属性
private Map<String,String> maps;
//4.set集合类型属性
private Set<String> sets;
//学生所学多门课程
private List<Course> courseList;
public void setCourseList(List<Course> courseList)
this.courseList = courseList;
public void setSets(Set<String> sets)
this.sets = sets;
public void setList(List<String> list)
this.list = list;
public void setMaps(Map<String, String> maps)
this.maps = maps;
public void setCourses(String[] courses)
this.courses = courses;
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);
<?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 https://www.springframework.org/schema/util/spring-util.xsd">
<!--1.集合类型属性注入-->
<bean id = "stu" class = "com.atguigu.collectiontype.Stu">
<!--数组类型属性注入-->
<property name="courses">
<array>
<value>java课程</value>
<value>数据库课程</value>
</array>
</property>
<!--list类型属性注入-->
<property name="list">
<list>
<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>
<!--注入list集合类型,值是对象-->
<property name="courseList">
<list>
<ref bean="course1"></ref>
<ref bean = "course2"></ref>
</list>
</property>
</bean>
<!--创建多个course对象-->
<bean id = "course1" class = "com.atguigu.collectiontype.Course">
<property name="cname" value="Spring5框架">
</property>
</bean>
<bean id = "course2" class = "com.atguigu.collectiontype.Course">
<property name="cname" value="MySql5框架">
</property>
</bean>
</beans>
测试:
package com.atguigu.test;
import com.atguigu.collectiontype.Stu;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testCollection
@Test
public void testCollection()
ApplicationContext context = new ClassPathXmlApplicationContext("bean5.xml");
Stu stu = context.getBean("stu", Stu.class);
stu.test();
把集合注入部分提取出来
(1)在spring配置文件中引入名称空间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标签完成list集合注入提取
package com.atguigu.spring.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);
<?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">
<!--1.提取list集合类型属性注入-->
<util:list id = "bookList">
<value>易筋经</value>
<value>九阴真经</value>
<value>九阳神功</value>
</util:list>
<!--2.提取list集合类型属性注入使用-->
<bean id = "book" class = "com.atguigu.spring.collectiontype.Book">
<property name="list" ref = "bookList">
</property>
</bean>
</beans>
测试:
package com.atguigu.spring.test;
import com.atguigu.spring.collectiontype.Book;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testBook
@Test
public void testCollection()
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
Book book = context.getBean("book", Book.class);
book.test();
以上是关于[Spring5]IOC容器_Bean管理XML方式_注入集合类型属性的主要内容,如果未能解决你的问题,请参考以下文章
[Spring5]IOC容器_Bean管理XML方式_注入其他类型属性
[Spring5]IOC容器_Bean管理XML方式_外部属性文件
[Spring5]IOC容器_Bean管理XML方式_创建对象_set注入属性and有参构造注入属性
[Spring5]IOC容器_Bean管理XML方式_注入集合类型属性