微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IOC控制反转和DI依赖注入区别

IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。 DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。 它们是spring核心思想的不同方面的描述。 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐