1.Spring 基于构造函数的依赖注入
当容器调用带有一组参数的类构造函数时,基于构造函数的 DI 就完成了,其中每个参数代表一个对其他类的依赖
Class MemberBean{
private String name;
private Double salary;
private Dept dept;
private String sex;
public void MemberBean(String name,String name,String name,String name ){
this.name = name;
...
}
}
Class Dept{
private String dname;
private String deptno;
}
1.根据索引赋值,索引都是以0开头的
<bean id="memberBean" class="com.liu.MemberBean">
<constructor-arg index="0" value="刘晓刚" />
<constructor-arg index="1" value="3500" />
<constructor-arg index="2" ref="dept"/>
<constructor-arg index="3" value="男" />
</bean>
2.根据属性类型传值
一般不这样做,若存在相同的类型的属性,则容易混淆
<constructor-arg type="Java.lang.String" value="刘晓刚"
<constructor-arg type="java.lang.Double" value="3500" />
<constructor-arg type="com.liu.Dept" ref="dept"/>
<constructor-arg type="java.lang.String" value="男" />
3.根据参数的名字传值:(推荐用法)
在这几种方法里我感觉这种方法是最实用的,他是根据名字来传值的,所以基本上只要名字对了,这个值就可以获取到
注意这里的dept,为对象类型。
<constructor-arg name="name" value="刘晓刚" />
<constructor-arg name="salary" value="3500" />
<constructor-arg name="dept" ref="dept"/>
<constructor-arg name="sex" value="男" />
<bean id="dept" class="com.liu.Dept" >
<property name="dname" value="北航"/>
<property name="deptno" value="00001"/>
</bean>
2.Spring Set方法注入
有了构造器注入,当然也有set方法注入了。
注入类型是String类型 Integer类型 和 类对象。
package org.com.qst.service.impl;
import org.com.qst.service.IAccountService;
import java.util.Date;
public class AccountServiceImpl2 implements IAccountService {
private String name;
private Integer age;
private Date time;
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setTime(Date time) {
this.time = time;
}
public void saveAccount() {
System.out.println("service"+name+age+time);
}
}
xml配置文件:
这里的name标签的属性是根据 set方法的名字来写的 如set方法名是setName,那么name标签 的属性就是name(第一个字母变小写)
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="now" class="java.util.Date"></bean>
<bean id="accountService2" class="org.com.qst.service.impl.AccountServiceImpl2">
<property name="name" value="ys"></property>
<property name="age" value="24"></property>
<property name="time" ref="now"></property>
</bean>
</beans>