Spring源码阅读之动态代理和AOP标签解析-第1篇

Spring源码阅读之动态代理和AOP标签解析-第1篇

0. 导读

经过前面十几篇的 Spring 源码解读,IOC 流程暂时告一段落,接下来几篇文章我们来讲讲另外一个话题 AOP。

AOP(Aspect Oriented Programming),即面向切面编程,它并不是 Spring 新提出来的概念,而是一种软件思想,Spring 只是该思想的一个具体应用。

本文不会讲解 AOP 的基本概念,如果不清楚的读者可以自行 Google 一下。

  • JDK 动态代理和 CGlib 动态代理实现方式

  • AOP 解析 <aop:aspectj-autoproxy/> 标签流程

    1. JDK 动态代理实

Spring源码阅读之动态代理和AOP标签解析-第1篇
目标类
Spring源码阅读之动态代理和AOP标签解析-第1篇
代理类
Spring源码阅读之动态代理和AOP标签解析-第1篇
测试类

2. CGlib 动态代理实现

Spring源码阅读之动态代理和AOP标签解析-第1篇
pom依赖
Spring源码阅读之动态代理和AOP标签解析-第1篇
代理类
Spring源码阅读之动态代理和AOP标签解析-第1篇
测试类

3.<aop:aspectj-autoproxy/> 流程分析

大家都知道,AOP 功能是通过打开 <aop:aspectj-autoproxy/> ,前面文章介绍过自定义标签,不熟悉的朋友可以翻翻原来的文章,我们找到AopNamespaceHandler来看看是如何解析这个标签的。

Spring源码阅读之动态代理和AOP标签解析-第1篇
init流程
Spring源码阅读之动态代理和AOP标签解析-第1篇
parse流程
Spring源码阅读之动态代理和AOP标签解析-第1篇
useClassProxyingIfNecessary流程

4. 总结

本文介绍了两种动态代理方式,分析了 <aop:aspectj-autoproxy/> 标签解析流程,同时注册了AnnotationAwareAspectJAutoProxyCreator下篇文章我们来分析 Spring 的 AOP 是怎么实现的,敬请期待。

Spring源码阅读之动态代理和AOP标签解析-第1篇

创作不易,白嫖点个再看,喜欢加个关注