写在前面
在分析 Spring AOP 源码之前,如果你对 Spring IOC、依赖注入(DI) 原理不是很清楚,建议您先了解一下:Spring IOC 源码解析、Spring 依赖注入(DI) 源码解析,这样或许会让你的思路更加清晰。
1.Spring AOP 是什么?
AOP(Aspect Oriented Programming)即:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术,是OOP(面向对象编程)的延续。
AOP是通过动态代理方式,从而实现在不修改源码的情况下,给程序动态的添加功能的一种技术。AOP,最主要的目的就是完成解耦。
2.AOP 名词介绍
在AOP中,共涉及到1.切面 Aspect、2.连接点 JoinPoint、3.通知 Advice、4.切入点 Pointcut、5.目标对象 Target Object这 5 个名词。
AOP 名词介绍,这块不做介绍。如果你想要了解,请跳转链接充电:AOP 名词介绍
3.AOP 通知Advice 介绍
AOP 通知,共有1.前置通知 Before advice、2.后置通知 After advice、3.返回后通知 After return advice、4.抛出异常后通知 After throwing advice、5、环绕通知 Around advice这 5 个。
AOP 通知相关知识,这块也不做介绍。如果你想要了解,请跳转链接充电:AOP 通知 Advice 介绍
4.AOP 在项目中的使用
AOP 在项目中的使用,此处分1.xml配置和 2.注解配置 分开进行介绍。AOP 在项目中的使用,我在之前博客中也有介绍,此处不再赘余。请跳转至:Spring AOP 在项目中的使用 去了解。本文主要来分析 Spring AOP 的源码部分。
5.AOP 源码分析从何入手
在 Spring 中,使用最多的就是工厂方法模式。我们在分析 Spring IOC & DI 依赖注入时,是从 BeanFactory 接口开始,然后通过getBean() 方法入手;
显然 Spring AOP 的实现,也使用了工厂方法模式。我们在 ProxyFactory 类中,可以通过 getProxy() 方法来获取 Spring 帮我们生成的 Bean 实例的代理对象。