spring AoP学习 -----AoP的相关概念实体 Advice / Aspect

本文内容纲要:spring AoP学习 -----AoP的相关概念实体 Advice / Aspect

    spring中的Advice按照其自身实例(instance)能否自目标对象类的所有实例中共享这一标准,可以划分成为两大类:

    1.**pre-class:**该类型的Advice的实例可以再目标对象类的说有实例之间共享,这些Advice不会保存类状态和信息,这类Advice有:

        1.before Advice: 只需要实现 aop.MethodBeforeAdvice接口。

        2.ThrowsAdvice:以接口定义aop.ThrowsAdvice对应通常Aop概念中的After Throwing Advice

        3.After Returning Advice

        4.Around Advice

    2.per-instance类型的Advice只有一种,就是 Introduction,可以在不改动目标类定义的情况下,为目标类添加新的属性和行为。

    spring AoP中的**Aspect:**Advisor代表spring中的Aspect,但是与正常的Aspect不同,advice通常只持有一个Pointcut和一个Advice.Advisor有两种实现体系,可简单的分为两个分支aop.PointcutAdvisor.IntroductionAdvisor.

    PointcutAdvisor是真正定义的一个Pointcut和Advice

      几个常用的实现:

  1. DefaultPointAdvisor:是最通用的pointcutAdvisor实现,除了不能 为其制定Introduction类型的Advice,其他剩下的pointcut,advice都可以通过他来实现。
  2. NameMatchMethodPointcutAdvisor:自身限定使用的Pointcut类型为NameMatchMethodPointcut
  3. RegexpMethodPointcutAdvisor:自身限定使用Pointcut类型为正则表达式的pointcut
  4. DefaultBeanFactoryPointcutAdvisor:使用这个Advisor需要绑定到spring的IoC容器中,作用是通过容器的Advice注册的beanName来关联对应的Advice,只有当对象的pointcut匹配成功之后,才去实例化对应的advice,减少容器启动初期的Advisor和advice之间的耦合性

  ** IntroductionAdvisor分支**:IntroductionAdvisor与pointcutAdvisor最本质上的区别就是:IntroductionAdvisor只能应用类级别的拦截。

   Order:当存在多个advisor的pointcut匹配同一个joinpoint是,多个横切逻辑作用于同个joinpoint时,可使用order对逻辑执行顺序进行排序

本文内容总结:spring AoP学习 -----AoP的相关概念实体 Advice / Aspect

原文链接:https://www.cnblogs.com/Qbright/archive/2012/07/24/2606939.html

以上是 spring AoP学习 -----AoP的相关概念实体 Advice / Aspect 的全部内容, 来源链接: utcz.com/z/362958.html

回到顶部