構造器注入
public class CatDaoImpl{
/*帶引數,方便利用構造器進行注入*/
public CatDaoImpl(String message){
this. message = message;
}
}
<bean id="CatDaoImpl" class="com.CatDaoImpl">
<constructor-arg value="message"></constructor-arg>
</bean>
setter方法注入
public class Id {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
<bean id="id" class="com.Id">
<property name="id" value="123"></property>
</bean>
靜態工廠注入
靜態工廠顧名思義,就是通過呼叫靜態工廠的方法來獲取自己需要的物件,為了讓 spring 管理所有物件,我們不能直接通過"工程類.靜態方法()"來獲取物件,而是依然通過 spring 注入的形式獲取:
public class DaoFactory {
//靜態工廠
public static final FactoryDao getStaticFactoryDaoImpl(){
return new StaticFacotryDaoImpl();
}
}
public class SpringAction {
private FactoryDao staticFactoryDao; //注入物件
//注入物件的 set 方法
public void setStaticFactoryDao(FactoryDao staticFactoryDao) {
this.staticFactoryDao = staticFactoryDao;
}
}
//factory-method="getStaticFactoryDaoImpl"指定呼叫哪個工廠方法
<bean name="springAction" class="SpringAction" >
<!--使用靜態工廠的方法注入物件,對應下面的組態檔-->
<property name="staticFactoryDao" ref="staticFactoryDao"></property>
</bean>
<!--此處獲取物件的方式是從工廠類中獲取靜態方法-->
<bean name="staticFactoryDao" class="DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean>
實體工廠
實體工廠的意思是獲取物件實體的方法不是靜態的,所以你需要首先 new 工廠類,再呼叫普通的實體方法:
public class DaoFactory { //實體工廠
public FactoryDao getFactoryDaoImpl(){
return new FactoryDaoImpl();
}
}
public class SpringAction {
private FactoryDao factoryDao;
//注入物件
public void setFactoryDao(FactoryDao factoryDao) {
this.factoryDao = factoryDao;
}
}
<bean name="springAction" class="SpringAction">
<!--使用實體工廠的方法注入物件,對應下面的組態檔-->
<property name="factoryDao" ref="factoryDao"></property>
</bean>
<!--此處獲取物件的方式是從工廠類中獲取實體方法-->
<bean name="daoFactory" class="com.DaoFactory"></bean>
<bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"></bean>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299545.html
標籤:其他
上一篇:JDK 1.8新特性
下一篇:一個專案帶你走進軟體測驗2
