1、静态代理
(1)实现方式
代理类和被代理类实现同一接口,代理类方法调用被代理类对应方法。
ClassA.methodA()--->ClassB.methodA()
(2)应用场景
被代理的类少,或切面代码与被代理的类与很强的相关性。
2、动态代理
(1)实现方式
动态代理由三部分组成:动态生成的代理类,切面类和目标类,代理类和目标类实现同一接口,代理类调用切面类,切面类调用目标类。
ProxyClassA.methodA()--->AspectClassA.invoke()--->TargetClassA.methodA()
(2)应用场景
需要被代理的类多,且切面代码具有普适性。