SpringFrameworkSpring源码分析

Spring AOP从原理到源码(一)

2020-04-20  本文已影响0人  李不言被占用了

为什么写这篇文章

AOP的源码之前看了2遍,大体流程基本都懂,但总感觉不太深刻,还有很多细节也不算熟悉,里面的类关系也非常复杂。
之前参考的一些博客,基本上没有解释核心类(即没有对核心类进行归类,导致看源码的时候感觉一会一个这个,一会一个那个,比较乱),二是没有对核心过程进行总结,上来就一头扎进源码里,最后是个人认为spring aop的源码只是对ProxyFactory进行封装,自上而下的阅读方法并不合适,应该先掌握了ProxyFactory以后,再看源码就能事半功倍。

每个人都有自己的学习方法,本文也不一定适合所有人,如果能给部分人带来帮助,就不错了。

为什么使用AOP?

Spring AOP与AspectJ的区别?

Spring AOP核心类

image.png image.png image.png

Advice定义在连接点做什么。
Pointcut是用来匹配切入点的。
AdvisorPointcutAdvice结合起来。
ProxyFactory编程式
ProxyFactoryBean结合IOC,声明式

AdvisedSupport保存着代理相关配置的类。

核心类的介绍大家先不用纠结,先大概有个了解,可以看看源码的注释,这些东西都需要反复好几次才能完全了解并记住,后面真正看源码的时候这几幅图肯定还需要再看的。

背景知识

  1. 设计模式:工厂、代理、适配器、责任链
  2. 静态代理与动态代理

可以深入到JDK动态代理的原理,可参考Java动态代理研究

Spring AOP核心过程

  1. 目标对象和拦截器的获取
  2. 代理对象的生成
  3. 调用过程中拦截器链触发拦截,实现对功能的增强

这里为什么写得这么简单,因为AOP的核心就是这么几个部分,最精髓的东西已经说出来了,永远记住这几个步骤,看源码的时候记住你现在看的是核心过程的哪个阶段,那你理解起源码来,真没什么难度。

小结

下一节,将自己手写一个简单的AOP,模拟对目标对象的增强。
转载请说明出处

上一篇 下一篇

猜你喜欢

热点阅读