1. 2.83 1.给容器中注入AspectJAnnotationAutoProxyCreator组件historical

    一般我们开启aop的功能是通过@EnableAspectJAutoProxy,所以首先查看其源码 1. 开启AOP - @EnableAspectJAutoProxy 关键在于导入的AspectJAutoProxyRegistrar这个类,他想容器中注入了一些组件 2. 注册AspectJAnnot

  2. 2.84 2.1AnnotationAwareAspectJAutoProxyCreator_Bean实例是如何创建的historical

    1. 类继承图 如下图可看出AnnotationAwareAspectJAutoProxyCreator既是一个Bean后置处理器,又是一个实现了BeanFactoryAware接口的类 2. 分析调用栈 我们首先再注入的Calc和LogAspects以及上图关键方法打上断点,运行发现调用流程如下

  3. 2.85 Spring_AOP源码分析总结historical

    创建日期 星期一 22 七月 2019 源码分析 ---- 1. @EnableAspectJAutoProxy @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(AspectJAuto

  4. 2.90 2.2AnnotationAwareAspectJAutoProxyCreator是在什么时候起作用的historical

    1. 继续研究BeanPostProcessor的postProcessBeforeInstantiation和postProcessAfterInitialization 我们把断点放行到 - AbstractAutoProxyCreator#postProcessBeforeInitializa

  5. 2.94 2.3AnnotationAwareAspectJAutoProxyCreator具体是怎么创建代理对象的historical

    1. 跟踪调用栈至postProcessBeforeInstantiation 我们继续放行断点,观察Calc实例的创建,断点主要停留在3个地方 2. 判断是否需要创建代理对象 - org.springframework.aop.framework.autoproxy.AbstractAutoPro

  6. 2.96 2.4目标方法是怎么执行的historical

    1. 继续放行断点执行Calc.div 2. 进入到代理对象的intercept方法 - CglibAopProxy.DynamicAdvisedInterceptor#intercept 2.1. 获取拦截器链 - AdvisedSupport#getInterceptorsAndDynamicI