spring ioc和di的区别

作者&投稿:詹屠 (若有异议请与网页底部的电邮联系)
面试题:Spring中IOC和DI的含义。应该怎么答~

ioc就是控制翻转或是依赖注入。通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你长生这样一个对象。
aop就是面向切面的编程。比如说你每做一次对数据库操作,都要生成一句日志。如果,你对数据库的操作有很多类,那你每一类中都要写关于日志的方法。但是如果你用aop,那么你可以写一个方法,在这个方法中有关于数据库操作的方法,每一次调用这个方法的时候,就加上生成日志的操作。
说的不是很清晰,多写多看就能明白了。

通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。

IOC是控制反转,所谓反转是指应用本身并不负责依赖对象的创建和维护,而把这个任务交给第三方即Spring去处理,这是将创建对象的权利交给第三方,控制反转就是控制权的转移
DI是依赖注入.依赖注入,是指运行期间,Spring动态的将依赖对象注入到组件中。
当IOC容器启动时,容器负责创建容器内的所有对象;
根据配置信息形成对象之间的依赖关系;
也就是说让别人(ioc)为你服务。这是核心。

IOC是个更宽泛的概念,DI是更具体的。引用郑烨的一篇博客,我眼中的Spring
Dependency Injection
原来,它叫IoC。
Martin Flower发话了,是个框架都有IoC,这不足以新生容器反转的“如何定位插件的具体实现”,于是,它有了个新名字,Dependency Injection。
其实,它就是一种将调用者与被调用者分离的思想,Uncle Bob管它叫DIP(Dependency Inversion Principle),并把它归入OO设计原则。
同Spring相比,它更早进入我的大脑。一切都是那么朦胧,直至Spring出现。

慢的,我知道了它还分为Interface Injection(type 1),Setter Injection(type
2),Constructor Injection(type 3)。Martin Flower那篇为它更名的大作让我心目关于它的一切趋于完整。
在Spring中,它是一切的基础。Spring的种种优势随之而来。
于我而言,它为我带来更多的是思维方式的转变,恐怕以后我再也无法写出那种一大块的全功能程序了。


七里河区18573414025: 面试题:Spring中IOC和DI的含义.应该怎么答 -
战俩泽宁: ioc就是控制翻转或是依赖注入.通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你长生这样一个对象.aop就是面向切面的编程.比如说你每做一次对数据库操作,都要生成...

七里河区18573414025: 控制反转和依赖注入的区别 -
战俩泽宁: 依赖注入IOC技术现在很流行,主要是spring带动起来的,IOC最典型的应用就是控制反转DI. 大致意思就是减少类间耦合度,避免用new来创建对象.

七里河区18573414025: Spring DI 也就是IoC的原理是什么 ? -
战俩泽宁: IOC是控制反转,所谓反转是指应用本身并不负责依赖对象的创建和维护,而把这个任务交给第三方即Spring去处理,这是将创建对象的权利交给第三方,控制反转就是控制权的转移 DI是依赖注入.依赖注入,是指运行期间,Spring动态的将依赖对象注入到组件中.当IOC容器启动时,容器负责创建容器内的所有对象; 根据配置信息形成对象之间的依赖关系;也就是说让别人(ioc)为你服务.这是核心.

七里河区18573414025: IoC与Gof设计模式的区别? -
战俩泽宁: 没有这样问的, IoC是反转控制,又称依赖注入DI,Spring里用的最多的一种模式,类似于一种架构模式.GoF(Gang of Four)是著名的四人组提出的设计模式,一共23种,从体系结构层面上适用于更小的元素,比如Spring里面几乎用到了所有的模式.

七里河区18573414025: ioc有两种实现机制 ioc是什么 为什么要ioc -
战俩泽宁: di就是ioc,前者叫依赖注入 dependency injection, 后者是控制反转Inverse of Control, spring的ioc是用aop的方式进行di实现的,往大了方向,模式角度讲,aop是用动态代理模式实现的. 不过你说地也对,可以把ioc认为是在解耦

七里河区18573414025: 什么是spring的ioc aop -
战俩泽宁: 既然你问IOC 你就一定知道Spring. Sring中所有的Bean对象管理都依赖于DI/IOC, Spring作为一个Web级容器,它把所有的Class类都可以转换为一个Bean对象来管理,通过加载、实例这个Bean对象,将它全部交给BeanFactory来管理,在你通过applicationContext.xml来使用和对其他Bean注入的这个过程,可以理解为IOC,使用IOC可以降低项目的耦合度,实现类与类之间的无依赖性. AOP是面向切面编程,可以在项目中指定的位置执行指定的操作,例如事务管理,可以在所有非Query的方法执行后都执行一次事务提交的操作.不需要修改代码,通过Xml配置 就可以完成这个操作.

七里河区18573414025: spring的ioc是怎么理解的 -
战俩泽宁: 没什么好理解的,就是一种设计模式,Spring中主要体现于DI(依赖注入) IOC:控制反转,对象的创建使用由Spring容器负责,而不是你

七里河区18573414025: 请你谈谈对spring的理解? -
战俩泽宁: 1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容器进行产生,同时,要是产生的是单例的bean,他还可以给管理bean的生...

七里河区18573414025: spring boot和spring的区别 -
战俩泽宁: 大概说一下: Spring 是一个“引擎” Spring MVC 是基于 Spring 的一个 MVC 框架 Spring Boot 是基于 Spring4 的条件注册的一套快速开发整合包Spring 最初利用“工厂模式”( DI )和“代理模式”( AOP )解耦应用组件.大家觉得挺好用,于...

七里河区18573414025: spring的ioc/aop/代理,都什么意思啊 -
战俩泽宁: ioc是控制反转,是spring的核心思想.通过面向接口编程来实现对业务组件的动态依赖. aop是面向切面编程,它并不是只在spring或者java中才有的,它和面向对象编程(oop)是相对而言的另一种编程思想. spring在实现aop编程时利用的是java的代理机制.个人觉得java代理机制真的是很神奇.核心内容并不多,建议你弄清楚它,aop编程自然也就彻底明白了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网