首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Spring DI 跟IOC 的一点区别

2012-10-26 
Spring DI 和IOC 的一点区别DI 和 IOC?DI和IOC是差不多的概念。?一个重要特征是接口依赖,是把对象关系推迟

Spring DI 和IOC 的一点区别

DI 和 IOC?
DI和IOC是差不多的概念。?
一个重要特征是接口依赖,是把对象关系推迟到运行时去确定.?
DI是一个初始化实例的过程,分为三种1.setter based 2.constructor based 3.interface based,在spring 中就是应用前两种;但又不仅仅是初始化实例,而且是运用接口的概念去实现这种注入依赖。静态地看,只是依赖一个接口,但实际运行起来,是依赖一个实现了该 接口的具体类。?
IOC就是面向接口编程的应用?
1.一个通常的做法(非面向接口编程的方法),对象A依赖对象B,B会作为A的属性,可以理解为A直接控制B;?
2.IOC的做法,对象A依赖于接口C,而不直接依赖于实现了接口C的B,也就是A不能直接控制是哪个具体实现了C的B去做相应的事情,而是由我们控制可以由哪个实现了接口C的B去处理,也就是控制反过来了,是由B来决定了,而不是由A,实现就是面向接口编程。?

AOP?

AOP是动态代理的应用,将具体业务和相应的其它方面(比如日志,权限之类的)划分开来,业务不会知道还有没有其它的功能来辅助,需要的话我就给他加上一个配置就可以,而不用去修改业务代码。?

原先是这个样子?

{?

//日志?

//权限?

//业务代码?

}?

现在?

{?

//业务代码?

}?

而权限和日志则写在其它的类advice中,只要在配置中说明在调用业务方法时(或前,或后,或别的),调用一下advice就OK了。很容易把一个方面,比如权限或日志从业务代码中剥离出来。?

在SPRING中,实现AOP的流程如下:?

1.定义业务接口?
2.定义业务实现类?
3.定义interceptor注入类?
4.配置Bean,设置class为proxyFactoryBean?
??? 设置其三个属性1.)proxyInterfaces为1?
?????????? 2.)interceptorNames为3?
?????????? 3.)target为2

热点排行