基于Xml的装配有两种方式,
(1)设值注入:Bean类必须有一个无参的构造方法;Bean类必须为属性提供Setter方法;在配置文件中使用<property>元素为每个属性注入值;
(2)构造注入:Bean类必须提供有参构造方法;配置文件中使用<constructor-arg>元素来为参数注入值;
User类
package com.ssm.assemble;
import java.util.List;
;
public class User {
private String username;
private Integer password;
private List<String> list;
/**
* 1.使用构造注入
* 1.2.提供带所有参数的有参构造方法
*/
public User(String username,Integer password,List<String> list) {
super();
this.username = username;
this.password = password;
this.list = list;
}
/**
* 2 使用设置值注入
* 2.1提供默认空构造方法
* 2.2为所有属性提供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 + '\'' +
", password=" + password +
", list=" + list +
'}';
}
}
beans5.xml
<?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.使用构造注入方式装配User实例-->
<bean id="user1" class="com.ssm.assemble.User">
<constructor-arg index="0" value="tom"/>
<constructor-arg index="1" value="123456"/>
<constructor-arg index="2">
<list>
<value>"constructorvalue1"</value>
<value>"constrctorvalue2"</value>
</list>
</constructor-arg>
</bean>
<!--2.使用设值注入方式装配User实例-->
<bean id="user2" class="com.ssm.assemble.User">
<property name="username" value="张三"></property>
<property name="password" value="654321"></property>
<!--注入list集合-->
<property name="list">
<list>
<value>"setlistvalue1"</value>
<value>"setlistvalue2"</value>
</list>
</property>
</bean>
</beans>
XmlBeanAssembleTest
package com.ssm.assemble;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class XmlBeanAssembleTest {
public static void main(String[] args){
//1.定义配置文件路径
String xmlpath="beans5.xml";
//2.加载配置文件
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(xmlpath);
//构造方式输出结果
System.out.println(applicationContext.getBean("user1"));
System.out.println(applicationContext.getBean("user2"));
}
}
运行结果