Spring|Spring AOP从原理到源码(一)

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

每个人都有自己的学习方法,本文也不一定适合所有人,如果能给部分人带来帮助,就不错了。
为什么使用AOP? Spring AOP与AspectJ的区别? Spring AOP核心类 Spring|Spring AOP从原理到源码(一)
文章图片
image.png Spring|Spring AOP从原理到源码(一)
文章图片
image.png Spring|Spring AOP从原理到源码(一)
文章图片
image.png Advice定义在连接点做什么。
Pointcut是用来匹配切入点的。
AdvisorPointcutAdvice结合起来。
ProxyFactory编程式
ProxyFactoryBean结合IOC,声明式
AdvisedSupport保存着代理相关配置的类。
核心类的介绍大家先不用纠结,先大概有个了解,可以看看源码的注释,这些东西都需要反复好几次才能完全了解并记住,后面真正看源码的时候这几幅图肯定还需要再看的。
背景知识
  1. 设计模式:工厂、代理、适配器、责任链
  2. 静态代理与动态代理
可以深入到JDK动态代理的原理,可参考Java动态代理研究
Spring AOP核心过程
  1. 目标对象和拦截器的获取
  2. 代理对象的生成
  3. 调用过程中拦截器链触发拦截,实现对功能的增强
这里为什么写得这么简单,因为AOP的核心就是这么几个部分,最精髓的东西已经说出来了,永远记住这几个步骤,看源码的时候记住你现在看的是核心过程的哪个阶段,那你理解起源码来,真没什么难度。
小结 【Spring|Spring AOP从原理到源码(一)】下一节,将自己手写一个简单的AOP,模拟对目标对象的增强。
转载请说明出处!

    推荐阅读