ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
> `AOP` * `AOP`将每一个方法调用,即**连接点**作为编程的入口,针对方法调用进行编程。从执行的逻辑上来看,相当于在之前纵向的按照时间轴执行的程序横向切入。相当于将之前的程序横向切割成若干的面,即`Aspect`.每个面被称为**切面**。 * 因为切面本质上是每一个方法调用,选择切面的过程实际上就是选择方法的过程。那么,被选择的**切面**(`Aspect`)在`AOP`术语里被称为**切入点**(`Point Cut`). 切入点实际上也是从所有的**连接点**(`Join point`)挑选自己感兴趣的连接点的过程。 * `Spring AOP`框架中通过 方法匹配表达式来表示**切入点**(`Point Cut`)。 ![](https://i.loli.net/2019/03/15/5c8b543c3a2b4.png) <br/> > ### 连接点 `Joinpoint` ``` public interface Joinpoint { /** 用于执行拦截器链中的下一个拦截器逻辑 */ Object proceed() throws Throwable; Object getThis(); AccessibleObject getStaticPart(); } ``` <br/> > ### 切点`Pointcut` ``` public interface Pointcut { /** 返回一个类型过滤器 */ ClassFilter getClassFilter(); /** 返回一个方法匹配器 */ MethodMatcher getMethodMatcher(); Pointcut TRUE = TruePointcut.INSTANCE; } ``` <br/> > ### 通知 `Advice` * 前置通知(Before advice)- 在目标方便调用前执行通知 * 后置通知(After advice)- 在目标方法完成后执行通知 * 返回通知(After returning advice)- 在目标方法执行成功后,调用通知 * 异常通知(After throwing advice)- 在目标方法抛出异常后,执行通知 * 环绕通知(Around advice)- 在目标方法调用前后均可执行自定义逻辑 <br/> > ### 切面 `Aspect` <br/> > ### 织入 `Weaving` <br/> <br/> *** 参考: [《Spring设计思想》AOP设计基本原理](https://blog.csdn.net/luanlouis/article/details/51095702) [Spring-AOP-源码分析系列文章导读](http://www.tianxiaobo.com/2018/06/17/Spring-AOP-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E5%AF%BC%E8%AF%BB/)