Spring经典总结(二)

2014-11-24 08:27:12 · 作者: · 浏览: 1
触发指定destory-method方法。
init-method指定的初始化方法可以在构造方法执行后自动执行。
4.如何使用Spring容器的IoC机制
Spring提供的IoC主要是用于建立两个对象(组件、Bean)之间的关系,
好处是低耦合方式。Spring经典总结
1)DI(依赖注入技术)
Dependency Injection 称为依赖注入。意思是采用注入技术建立两个组件
的依赖关系。
Spring通过DI技术实现了IoC思想。DI技术可以分成以下几类:
--setter方式注入(依靠属性的set方法注入)
对应的注入方式只能是setter注入
applicationContext.xml配置:
destroy-method="mydestroy" class="com.tarena.dao.JdbcCostDAO">
class="com.tarena.dao.HibernateCostDAO">
class="com.tarena.action.CostAction">
其中,name=”costDao”中的costDao为要注入的属性,即public void
setCostDao ....方法中的setCostDao()方法名中的除”set”之后的部分
/** setter方式注入示例*/
public class CostAction {
private CostDAO costDao1;
// spring自动调用该方法,注入一个CostDAO对象
public void setCostDao(CostDAO costDao) {
this.costDao1 = costDao;
}
public String add() {
System.out.println("执行资费添加操作");
costDao1.save();
return "success";
}
}
--构造方式注入(依靠构造方法注入)
applicationContext.xml配置:
destroy-method="mydestroy" class="com.tarena.dao.JdbcCostDAO">
class="com.tarena.dao.HibernateCostDAO">
class="com.tarena.action.CostAction1">
其中,
ref="要注入的Bean对象的id">
Spring经典总结
/**构造方式注入示例*/
public class CostAction1 {
private CostDAO costDao1;
// spring自动调用该方法,注入一个CostDAO对象
public CostAction1(CostDAO costDao) {
this.costDao1 = costDao;
}
public String add() {
System.out.println("执行资费添加操作");
costDao1.save();
return "success";
}
}
--接口方式注入(了解名称,可以参考spring文档)
2)IoC思想
Inverse of Controller 称为反向控制或控制反转,确切讲被称为控制转移,
意思就是转交控制权。
所谓控制及控制权:指的是负责对象的创建、初始化以及销毁等工作。
两个组件,当A调用B时,原有方式需要在A里面编写控制权逻辑代码,
当需要替换B组件时,需要修改控制权逻辑,因此A和B组件的耦合度比
较高。
采用IoC思想后,就是将A中的控制权逻辑转移给第三方容器或框架,有
第三方框架负责A,B对象的创建,释放,初始化和关系指定等工作。
*3)Action--->DAO采用Spring的IoC方式
--在Action中定义一个DAO接口类型的变量
--在Action中定义一个setter方法,主要作用是接收spring注入进
来DAO对象。
--将Action和DAO都交给Spring容器,Action配置如下:
ref="dao定义时的Bean组件Id值">
参见上例“setter方式注入”
4)采用构造方式注入重构3示例
--定义带参数构造方法替代setter方法
--定义Action的时,采用
替代配置
ref="要注入的Bean对象的id">
参见上例“构造方式注入”
5.各种类型数据的注入
1)基本数据注入
利用value属性指定,可以注入字符串,数值等简单数据。
*2)Bean对象注入
利用ref属性指定,可以注入一个Bean组件对象
class="com.tarena.action.CostAction">
3)集合数据注入
eg:
applicationContext.xml配置如下:
class="com.tarena.service.MessageBean">