Spring学习笔记(一)----IoC之DI
来源:互联网 发布:区域软件 编辑:程序博客网 时间:2024/04/30 05:40
这里所说的高层模块是指与业务相联系的模块。而低层模块是指与底层实现相联系的模块,如数据库操作模块,硬件相关的模块等。
看下面一个例子:
业务模块Business直接调用了实现模块的方法,也即高层模块与底层模块产生了依赖关系。当业务发生变更时,例如需要使用sql server了,这时我们不得不去修改Business的代码。过了两天,客户又要使用Oracle了,这时程序员就该骂人了,呵呵。
下面就来用IoC的方法来改造这个应用:
通常所说的高层依赖于抽象,我们一般是把低层的应用抽象成接口,低层实现接口,高层依赖于接口。这样,需求变更时,只需创建不同的实现即可。
如果A依赖于B,那么B即具有控制权,如果B是具体实现,这是我们不愿看到的,所以要转移这种依赖关系,将控制权转移到抽象的方法,让抽象的方法具有控制权。
实际上,IoC的实现有两种方式(参见Martin Fowler的文章http://www.martinfowler.com/articles/injection.html),即Dependency Injection 与Service Locator,Spring采用的是前者,中文译为依赖注入(DI)。
DI的实现方式有三种:Interface injection(Type 1 IoC),Setter injection(Type 2 IoC), 和 Constructor injection(Type 3 IoC)。
Spring鼓励使用Type 2的DI方式,因为Setter有明确的方法名称可以用来了解注入对象的作用或类型,使用setXXX()这样的方法在语义上也要比另外两种方法好得多。
下面是使用了Type 2的Business类:
public class Business{
private DBManage dbManage;
public void setDbManage(DBManage dbManage){
this.dbManage = dbManage;
}
......
publilc doBusinesss(Message message){
dbManage.save(message);
}
......
}
不要担心DBManage的注入,Spring容器会处理这些事情。程序员做的只需是配置文件的设定(xml或properties文件),让Sping在执行时期根据配置文件的设定,建立对象之间的依赖关系
- Spring学习笔记(一)----IoC之DI
- Spring学习笔记(一)----IoC之DI
- Spring学习笔记之基础、IOC、DI(1)
- Spring IOC 学习笔记(一) IoC和DI概述
- Spring IOC 学习笔记(一) IoC和DI概述
- spring 学习笔记(2)--IOC(DI)
- Spring之IOC/DI(一)
- Spring学习笔记之IOC和DI 概述
- spring学习之IOC和DI
- Spring学习之IOC与DI
- Spring 之 IOC/DI
- Spring学习之DI(一)
- Spring回顾(一)IoC & DI
- spring框架学习之路(一)-入门基础(1)-IOC(控制反转)&DI(依赖注入)
- Spring IOC和DI笔记
- 【Spring学习】IoC与DI
- Spring之IoC/DI开发
- Spring之IOC与DI
- Xpath : 使用部分属性值模糊匹配来定位页面元素
- 禀父母·谨守父亲保身之则
- 软件性能测试理论手札(二)
- vbox安装ubuntu 16.04时出现"busybox-initramfs"
- (三)使用swftools将pdf转换为swf
- Spring学习笔记(一)----IoC之DI
- UVA 10655 Contemplation! Algebra
- (4.6.17.7)进程保活(四:5.0以上):-native保活5.0以上方案推演过程以及代码详述
- mysql忘记登录密码需要注意的地方
- POJ1003:Hangover
- maven 项目引入jar包
- 精卫填海
- 驱动编写
- 函数指针和函数对象的比较