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

代理

  • 代理(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

posted on 2019-04-15 16:49  coding_gaga  阅读(143)  评论(0编辑  收藏  举报

导航