• Java--Spring AOP 源码散点记录(最后整理成一篇博客)


    Spring AOP 源码记录:

    1.AOP 入口ProxyFactoryBean.getObject()方法;

    2.AOP实现:

    (1)实现InvocationHandler接口

    (2)通过java.lang.reflect.Proxy.newProxyInstance生成代理类

    3.JDK与cglib动态代理的区别

    (1)JDK动态代理生成的class都是基于反射去调用,所以调用性能低。

    (2)cglib动态代理生成的class是继承原有class并且重写父类的方法,所以调用性能高,但是无法代理Final关键字修饰的class和方法。

    4.使用<aop:aspectj-autoproxy proxy-target-class="true"/>注解源码解析

    (1)使用该注解以后,Spring解析注解时会将AnnotationAwareAspectJAutoProxyCreator注入到容器当中,而该类是实现了BeanPostProcessor接口的

    (2)AnnotationAwareAspectJAutoProxyCreator会自动查找带@Aspect注解的class

    (3)最后在AnnotationAwareAspectJAutoProxyCreator的postProcessAfterInitialization(Object bean, String beanName)方法中生成对象的代理对象并且替换原对象。

  • 相关阅读:
    [hdu6271]Master of Connected Component
    [hdu5468]Puzzled Elena
    [hdu4582]DFS spanning tree
    [poj2054]Color a Tree
    [luogu4107]兔子和樱花
    整除的尾数[HDU2099]
    胜利大逃亡[HDU1253]
    Bitset[HDU2051]
    折线分割平面[HDU2050]
    不容易系列之(4)——考新郎[HDU2049]
  • 原文地址:https://www.cnblogs.com/eoss/p/5967176.html
Copyright © 2020-2023  润新知