1.希望不要照搬网上的答案,有自己的认知与总结
2.最好简洁明了但是要说的稍微深入些,因为是在口头说话,太简单会觉得在敷衍
3.最好举例子说到用在什么地方的,能一听就知道作用
总的来说:
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中的,依赖注入的名字就这么来的。
具体还是得根据个人的理解去学习。
AOP 官方的解释是面向切面编程,实际上 AOP 的应用是指在不改动源代码的情况下,灵活添加业务逻辑实现.
IOC 比较好理解,就是对象的控制器交出去给 spring 来管理.大幅降低代码之间的耦合度.
DI 就是将spring管理的对象通过 AutoWrite 注解注入到我们需要的地方.注入过来的对象是由spring管理的.
AOP:面向切面编程,动态封装一些可重用(与业务无关)的代码;
IOC: 控制反转,DI:依赖注入,这两者其实是同一概念,具体的讲:在某个地方需要一个对象的时候,在传统的程序设计过程中,通常由调用者来创建一个对象的。但在spring中,创建对象的工作不再由调用者来完成,因此称为控制反转。创建对象的工作由spring来完成,然后注入调用者,因此也称为依赖注入。
可以打个比喻,编程来源生活,这样你记得会比较清而且会比较深刻
按你的理解去回答,如果你真的学的还可以,这个问题应该不是很难,要是答不出来,建议还是好好学一下
IOC控制反转,就是将xml文件配置的bean利用反射实例化对象,DI依赖注入可以通过构造器注入和setter注入,aop在切入点实现指定2功能
IOC:控制翻转,需要的时候直接从容器中取,而不管容器是怎么给你的
AOP:面向切面的编程,底层原理是动态代理
AOP: 举个例子: 比如一个项目中存在N多个save()方法, 如果,现在项目有一个需求,比如在保存完成之前后者之后,需要记录日志操作,如果不用AOP,你需要找到每个类里面的
save方法,然后添加响应的代码,费时费力并且后期也不好维护,如果引用AOP技术,只需要自定义一个方法,在spring配置文件中将该方法配置好,当每次调用完原先的save方法时,都会去执行你写的保存日志方法。
IOC:这个顾名思义就是将对象的创建交给容器,例如:A类中调用B类的方法,我们会在A类中new B()类对象,这样A类和B类的耦合程度较高,不便于解耦,因而IOC派上用场了,在A类中如果我们要调用B类中的方法,B类的对象我们可以使用@RESOURCE注解等方式注入进来,然后在A类中直接使用该对象调用响应的B类方法,从而达到了解耦的目的。
DI:依赖注入,列举常用的方式,一个WEB项目中,前端JSP的页面中的form表单,例如学生的相关信息,我们只需要将学生表生成实体,提供set(),get()方法,jsp页面的input标签name属性指定和bean中定义的变量一样,发送请求,后台方法就可以直接用该实体进行接收,这就是以一种DI。
aop你可以举一些列子比如事物,还有格式转化,日期转化之类的
ioc和di就是两个相反方向的,比如我控制你,反过来就是你被我控制.
下载一份面试宝典看看
这个东西一句两句说不清,给你两篇文章吧,会很容易让你理解的,AOP:https://www.cnblogs.com/hongwz/p/5764917.html,IOC:http://blog.csdn.net/qq_22654611/article/details/52606960/
IOC控制反转、DL依赖注入、AOP面向切面编程,先说一下这3个有什么用,然后在说一下原理,IOC通过Dom4j+反射机制,DL反射机制、AOP通过代理设计模式的动态代理
有篇文章非常经典,特别是后面的实例,看完完全明白IOC和DI
谈谈对Spring IOC的理解
AOP:面向切面的编程
IOC:控制反转