目录
一、AOP是什么
原来写代码呢,都是通过继承来代码重用,但是增加了许多重复代码。AOP又叫做面向切面编程。aop的作用就是在不修改其他代码的情况下达到并进行增强(不修改源码的基础上进行其他操作),它的优势显而易见:减少了重复代码,提高开发效率,维护更加方便
二、AOP常用于哪些场景及原理
AOP经常用于 操作日志的记录、用户的权限验证、全局的异常处理、缓存等
AOP的实现原理就是JDK动态代理
三、AOP中的相关概念
1、连接点(JoinPoint)
连接点是指程序执行过程中的一些点,比如方法调用,异常处理等。在 Spring AOP 中,仅支持方法级别的连接点。通俗来说就是能够被拦截的地方,每个成员方法都可以称之为连接点。
2、切入点(Pointcut)
切入点是指我们要对那些joinpoint进行拦截的定义,也就是被增强的连接点就是切入点。
3、通知(Advice)
通知是指拦截到joinpoint之后所要做的事情(增强的代码)就是通知。通知分为前置通知、后置通知、异常通知、最终通知、环绕通知。
(1)前置通知(Before Advice)
就是在某个连接点前面执行的通知;在方法执行前执行
(2)后置通知(After Advice)
在某个连接点后面执行的通知;在方法执行后执行
(3)返回后通知(After Return Advice)
在某个连接点正常运行后执行(如果抛出异常则不执行
(4)环绕通知(Around Advice)
包围某个连接点的通知;在方法之前和之后执行
(5)异常通知(After Throwing Advice)
在执行核心关注点过程中,如果抛出异常则会执行
4、目标对象(Target)
代理的目标对象,即增强方法所在的类
5、织入(Weaving)
将切面应用到目标对象并导致代理对象创建的过程,或者说把增强用到类的过程