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)方法中生成对象的代理对象并且替换原对象。

  • 相关阅读:
    ETL之数据库
    Git的简单实用
    Linux-easy mock部署
    Linux-docker安装mysql
    Linux-安装docker
    Linux-centos7安装Python3和pip3
    Linux-VMware下安装centos7
    Python之hasattr()、getattr()和setattr()
    jsonpath 信息抽取类库
    Python之内置测试框架unittest
  • 原文地址:https://www.cnblogs.com/eoss/p/5967176.html
Copyright © 2011-2022 走看看