Spring AOP 的 Advice 和 Advisor 有什么区别

简单来说:Advice 是通知,Advisor 是增强器。(说了跟没说一样…)

使用 spring aop 要定义切面,切面里面有 通知 和 切点。

在项目启动的过程中,项目中的所有切面会被 AnnotationAwareAspectJAutoProxyCreator 解析,它会找到切面中的每一个通知以及通知对应的切点,拿这二者构建一个新的对象,这个对象就是 Advisor()。最后将所有解析得到的增强器注入到容器中。

// 这是项目中增强器的类型
final class InstantiationModelAwarePointcutAdvisorImpl{
    private final Pointcut pointcut; // 切点
    private Advice instantiatedAdvice; // 通知
    // 其他字段就不贴了。
}
Spring AOP 的 Advice 和 Advisor 有什么区别_第1张图片

在业务方法执行的时候,增强器会拦截它里面的切点命中的方法,最后在”恰当“的时候执行通知。

spring aop 的实现过程

你可能感兴趣的:(Spring,Boot学习笔记,spring,aop,Advisor,Advice,区别)