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>