AOP 面向切面编程是一种编程思想,是 OOP 的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
AOP得应用场景:
事务管理
权限校验
日志记录
性能监控
Spring中常用的术语
Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点
Pointcut(切入点):所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义.真正被增强的方法
Advice(通知/ 增强):所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知。
【面试问题】
通知的类型:前置通知,正常返回通知,异常通知,最终通知,环绕通知。
Introduction(引介,了解): 引介是一种特殊的通知在不修改类代码的前提下, Introduction 可以在运行期为类动态地添加一些方 法或 Field。
Target(目标对象):代理的目标对象
Proxy (代理):一个类被 AOP 织入增强后,就产生一个结果代理类
Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入
Aspect(切面):是切入点和通知(引介)的结合,描述了 增强具体应用的位置。
AOP的作用及优势
作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强。体现了java语言的动态性【反射】
优势:减少重复代码,提高开发效率,并且便于维护