一:IOC的理解
IoC(Inverse of Control:控制反转)是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IOC思想是基于IOC容器来完成的,IOC容器底层就是对象工厂(BeanFactory接口)。IOC的原理是基于xml解析、工厂设计模式、反射来实现的。 IoC 容器实际上就是个Map(key,value)Map 中存放的是各种对象。
通俗易懂的一句话结论:之前需要我们自己手动new对象的,但是我们现在不需要反复去new对象了,而是把new对象的主动权交给IOC容器,我们什么时候用什么时候取就可以了。
随着技术越来越先进,在Spring原生中我们觉得xml文件中配置还是有点麻烦,后来就有了springboot内部集成了这些功能,我们直接一个注解就可以了,方便了很多。
二:AOP的理解
AOP(Aspect-Oriented Programming:面向切面编程)AOP代表的是一个横向的关系,剖开对象的内部,并且把影响多个类的共同行为抽取出来,作为公共模块(叫做切面Aspect),然后再通过织入的方式把这个切面放进去。理解来说:就是能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
通俗易懂的一句话结论:就是不通过修改源代码方式,在主干功能里面添加新功能。
AOP底层是通过动态代理来实现的,同时有JDK动态代理和CGLIB动态代理两种方式:
1.有接口的情况,使用 JDK 动态代理,即创建接口实现类代理对象,增强类的方法。
2.没有接口的情况,使用 CGLIB 动态代理,即创建子类的代理对象,增强类的方法。
AOP的专业术语
1.Advice (增强/通知) 表示需要扩展的功能,所在的类叫做增强类/通知类。
2.JoinPoint(连接点)程序执行的某个特定位置
3.PointCut(切入点)AOP 通过切点来定位特定的连接点
4.Aspect(切面)切面由切点和增强组成,他既包含横切的定义,也包括了连接点的定义。 springAOP就是负责实施切面的框架,他将切面定义为横切逻辑织入到切面所指定的连接点。
5.织入(weaving) 就是把Advice添加到目标类的连接点的过程
6.目标对象 顾名思义:要增强到具体的对象文章来源:https://www.toymoban.com/news/detail-447477.html
文章来源地址https://www.toymoban.com/news/detail-447477.html
到了这里,关于【面试题】谈谈你对IOC和AOP的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!