zoukankan      html  css  js  c++  java
  • 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)方法中生成对象的代理对象并且替换原对象。

  • 相关阅读:
    Go语言趣学指南lesson3
    简单的>this
    多媒体查询
    解析对象原型链
    笑对人生,坐看云起云落
    HTML5
    javascript函数及作用域的小结
    不得不知call()和apply()
    浅谈弹性盒子布局
    编译原理实验(算符优先文法)
  • 原文地址:https://www.cnblogs.com/eoss/p/5967176.html
Copyright © 2011-2022 走看看