1. 2.30 使用historical

    1. 创建项目 2. pom.xml 3. 代码 3.1. 业务逻辑类 - HelloWorld 3.2. 切面类 3.3. 配置类

  2. 2.45 是什么historical

    1. AOP是什么 面向切面编程。不改变原有代码的基础上增加功能。 没有AOP之前,我们要增加一个打印日志的功能,可以直接修改原有代码,但这样业务代码和其他代码耦合在一起,不好维护; 有了AOP之后,我只需要在AOP中写这个打印日志的代码,原有的代码不用改动。 2. 实现原理 代理模式.md Spr

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

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

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

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

  5. 2.85 Spring_AOP源码分析总结historical

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

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

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

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

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

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

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