SpringAOP

作者: CoderZzbJohn | 来源:发表于2019-01-22 18:14 被阅读0次
    image.png
    1. 拦截器可以配置。Advice Advisor Interceptor
      Advice :方法加强的类。MethodBeforeAdvice , AfterReturningAdvice
      Advisor : Advisor中包括一个Advice。可以多配置一个属性mappedNames。用来表示加强哪些方法
      Interceptor: 拦截器。

    2. 2.1 @PointCut 用来表示切面,哪些类中的哪些方法需要加强。

      2.2
      @Before
      @After 类似于finally。无论正常返回还是抛异常都会经过该方法。
      @Aroud before+afterReturning
      @AfterThrowing
      @AfterReturning 加上returning="retVal"可以在方法中获取返回值。

    1. AspectJ 和 spring的aop没有直接关系。springAop只是引用了Aspect包中的注解,具体实现方式都在spring-aop中。但是AspectJ功能更强大。

    4.所有的拦截之后的加强都是针对类来说的。spring中,将beanFactory中的原来的类替换成代理类。
    在spring启动过程中,配置了@Aspect的类将会在spring中注册一个BeanPostProcessor,这个类在初始化对象的时候,将对象进行加强。

    5.具体的生成代理类通过jdk代理或cglib。当配置了<aop:config proxy-target-class="true">后,默认直接使用cglib代理。如果没有该配置,则在类增强的时候,先判断该类是否实现了自定义的接口,如果实现了自定义接口则通过 jdk方式代理。若没有,则使用 cglib 基于继承的方式来代理。

    相关文章

      网友评论

          本文标题:SpringAOP

          本文链接:https://www.haomeiwen.com/subject/wzdrjqtx.html