Bean的装配可以理解为依赖关系注入,Bean的装配方式有三种。如:基于XML的装配,基于注解的装配和自动装配(其中最常用的是基于注解的装配),今天就来练习基于XML的装配
而Spring提供了两种基于XML的装配方式:设值注入和构造注入
使用设值注入时在Spring配置文件中,需要使用<bean>元素的子元素<property>来为每个属性注入值,
而使用构造注入时,在配置文件中,需要使用<bean>元素的子元素<constructor-arg>来定义构造方法的参数,可以使用其value属性来设置该参数的值。下面通过一个案例来学习基于XML方式的Bean装配
1、在项目chapter02的src目录下,创建一个com.itheima.assemble包,在该包中创建User类,并在类中定义username、password和list集合三个属性及其对应的setter方法,如下面代码所示:
package com.itheima.assemble;
import java.util.List;
public class User {
private String username;
private Integer password;
private List<String> list;
/**
* 使用构造注入
* 提供带所有参数的构造方法
*/
public User(String username,Integer password,List<String> list) {
super();
this.password=password;
this.username=username;
this.list=list;
}
/**
* 使用设置注入
* 默认的空参构造方法
* 为所有属性提供setter方法
*/
public User() {
super();
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(Integer password) {
this.password = password;
}
public void setList(List<String> list) {
this.list = list;
}
@Override
public String toString() {
return "User [username=" +username +",passeord=" +password +",list=" +list +"]";
}
}
2、在com.itheima.assemble包中,创建配置文件beans5.xml,在配置文件中通过构造注入和设值注入的方式来装配User类的实例,代码如下:
<?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-4.3.xsd">
<!-- 使用构造注入方式装配User实例 -->
<bean id="user1" class="com.itheima.assemble.User">
<constructor-arg index="0" value="tom" />
<constructor-arg index="1" value="123456" />
<constructor-arg index="2">
<list>
<value>"constructorvalue1"</value>
<value>"constructorvalue2"</value>
</list>
</constructor-arg>
</bean>
<!-- 使用设置注入方式装配User实例 -->
<bean id="user2" class="com.itheima.assemble.User">
<property name="username" value="张三"></property>
<property name="passeord" value="654321"></property>
<property name="list">
<list>
<value>"setlistvalue1"</value>
<value>"setlistvalue2"</value>
</list>
</property>
</bean>
</beans>
3、在com.itheima.assemble包中,创建测试类XmlBeanAssembleTest,在类中分别获取并输出配置文件中的user1和user2实例,如下面代码所示:
package com.itheima.assemble;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class XmlBeanAssmebleTest {
private static ApplicationContext beanlizi;
public static void main(String[] args) {
String xmlPath = "com/itheima/assemble/beans5.xml";
beanlizi = new ClassPathXmlApplicationContext(xmlPath);
System.out.println(beanlizi.getBean("user1"));
System.out.println(beanlizi.getBean("user2"));
}
}
4、执行程序,控制台输出为下图所示:
从上图中我们可以看到已经成功的使用基于XML装配的构造注入和设置注入两种方式装配了User实例