[Spring实战笔记]4面向切面编程的Spring-代理

时间:2021-07-23 19:54:23

代理

  • 代理(Proxy)是一种设计模式,可以在目标对象实现的基础上,扩展目标对象的功能。
  • 代理对象是对目标对象的扩展,并会调用目标对象。

三种代理模式

  • 静态代理 100%

    代理对象与目标对象要实现相同的接口,然后通过调用相同的方法来调用目标对象的方法。

    优点:不用修改原对象。

    缺点:一旦接口增加方法,目标对象和代理对象都要维护。
  • 动态代理(也叫JDK代理,接口代理) 30%

    动态代理中,代理对象不需要实现接口,代理对象的生成是利用JDK的API,动态地在内存中构建代理对象。

    使用java.lang.reflect.Proxy包中的newProxyInstance方法:
static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces,InvocationHandler h )

要求:要求目标对象必须实现了接口。

  • Cglib代理(子类代理) 10%

    Spring AOP使用。Spring的切面由包裹了目标对象的代理类实现。代理类处理方法的调用,执行额外的切面逻辑,并调用目标方法。

参考链接

https://www.cnblogs.com/qlqwjy/p/7550609.html