Spring集合注入:
在以下每一个类都创建一个测试类用于运行测试,用
Demo:
public class Test_Test{
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Test test = ctx.getBean("test",Test.class);
System.out.println(test);
}
}
1.注入数组数据:
Demo:创建Test类
public class Test{
private String msg[];
private int data[];
public String[] getMsg() {
return msg;
}
public void setMsg(String[] msg) {
this.msg = msg;
}
public int[] getData() {
return data;
}
public void setData(int[] data) {
this.data = data;
}
@Override
public String toString() {
return "msg=" + Arrays.toString(this.msg)+",data="+Arrays.toString(this.data);
}
}
可以接收两个数组的对象信息, 在使用数组数据的时候都设置了对应的数据类型。
<bean id="test" class="com.project.Test.Test"><!—路径以自己的为准-->
<property name="data">
<array value-type="java.lang.Integer">
<value>10</value>
<value>20</value>
<value>30</value>
</array>
</property>
<property name="msg">
<array value-type="java.lang.String">
<value>SpringBoot</value>
<value>Spring</value>
<value>SpringMVC</value>
</array>
</property>
</bean>
点击Test_Test测试类运行结果:
2.使用List集合操作数组对象:
public class Item2 {
private List<String> msg;
public void setMsg(List<String> msg) {
this.msg = msg;
}
public List<String> getMsg() {
return msg;
}
@Override
public String toString() {
return "msg= "+this.msg;
}
}
在applicationContext.xml配置文件中添加item2对象,设置数组的类型和值
<bean id="item2" class="com.project.Demo2.Item2">
<property name="msg">
<array value-type="java.lang.String">
<value>"Java工程师"</value>
<value>"信息安全工程师"</value>
</array>
</property>
</bean>
Set集合注入会出去重复的值,操作方法和List是一样的
ItemTest类运行查看结果
public class TestItem2 {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Item2 item2 = ctx.getBean("item2",Item2.class);
System.out.println(item2);
}
}
3.注入Map集合
以上一个类为操作,使用Map创建属性:
public class Item2 {
private Map<Integer,String> msg;
public Map<Integer, String> getMsg() {
return msg;
}
public void setMsg(Map<Integer, String> msg) {
this.msg = msg;
}
}
在bean对象里面设置Map属性的键值:
<bean id="item2" class="com.project.Demo2.Item2">
<property name="msg">
<map key-type="java.lang.Integer" value-type="java.lang.String">
<entry key="1" value="Spring"></entry>
<entry key="2" value="MyBatis"></entry>
</map>
</property>
</bean>
4.Properties注入
集合注入在开发配置文件的编写过程中最常见的是Properties类型。
创建Properties类型的属性,进行初始化:
public class Item2 {
//只能设置String类型的数据
private Properties msg;
public Properties getMsg() {
return msg;
}
public void setMsg(Properties msg) {
this.msg = msg;
}
@Override
public String toString() {
return "msg= "+this.msg;
}
}
xml文件设置Properties类型的键值:
<bean id="item2" class="com.project.Demo2.Item2">
<property name="msg">
<props>
<prop key="java">www.java.com</prop>
<prop key="spring">www.spring.cn</prop>
</props>
</property>
</bean>
点击ItemTest测试类运行结果:
6.Spring实现文件内部的引用定义:
创建Dept部门类,实现对Employee员工类内部属性的引用:
public class Detp {
private int DetpId;
private String DetpName;
private List<Employee> employees;
public List<Employee> getEmployees() {
return employees;
}
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
public int getDetpId() {
return DetpId;
}
public String getDetpName() {
return DetpName;
}
public void setDetpId(int detpId) {
DetpId = detpId;
}
public void setDetpName(String detpName) {
DetpName = detpName;
}
@Override
public String toString() {
return "部门编号: "+this.DetpId+",部门名称: "+this.DetpName+",雇员信息: "+this.employees;
}
}
然后通过xml配置文件描述以上的结构关系:
<bean id="dept" class="com.project.Test.Detp">
<property name="detpName" value="开发部"/>
<property name="detpId" value="1"/>
<property name="employees">
<!--指定数据类型为Employee类-->
<list value-type="com.project.Test.Employee">
<!--使用反射调用员工对象-->
<ref bean="empA"/>
<ref bean="empB"/>
<ref bean="empC"/>
</list>
</property>
</bean>
<!--设置3个不同的bean对象-->
<bean id="empA" class="com.project.Test.Employee">
<property name="emp_id" value="15811"/>
<property name="emp_name" value="EmployeeA"/>
<!--ref引用其他Bean对象的内容-->
<property name="detp" ref="dept"/>
</bean>
<bean id="empB" class="com.project.Test.Employee">
<property name="emp_id" value="15812"/>
<property name="emp_name" value="EmployeeB"/>
<property name="detp" ref="dept"/>
</bean>
<bean id="empC" class="com.project.Test.Employee">
<property name="emp_id" value="15813"/>
<property name="emp_name" value="EmployeeC"/>
<property name="detp" ref="dept"/>
</bean>
点击Employee的测试类运行结果: