本文我们来学习 Spring AOP 的原理,也就是 Spring 是如何实现 AOP 的。Spring AOP 是基于动态代理来实现 AOP 的;
1. 代理模式
1.1 代理弄模式的定义
代理模式,也叫委托模式。
定义:为其他对象提供一种代理以控制这个对象的访问。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用。
某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。
使用代理前:
使用代理后:
就像生活中的例子,生活中的代理类似与艺人经纪人:广告商找艺人拍广告,需要经过经纪人,由经纪人来和艺人沟通。
1.2 代理模式的主要角色:
1、Subject:业务接口类。可以是抽象类或者接口(不一定有)。
2、RealSubject:业务实现类。具体的业务执行,也就是被代理对象。
3、Proxy:代理类。RealSubject的代理。
比如让xox代言:
Subject:合约方就是提前定义了合约方要xox做的事情,交给经纪人代理处理;
RealSubject:合约方。
Proxy:经纪人。
UML类图如下:
代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。根据代理的创建时期,代理模式分为静态代理和动态代理。
静态代理:由程序员创建代理类或特定工具自动生成源代码再对其编译,在程序运行前代理类的 .class 文件就已经存在了。
动态代理:在程序运行时,运用反射机制动态创建而成。
ps:本文写到这里就结束了,感谢观看;