您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页SpringAOP之动态代理

SpringAOP之动态代理

来源:步遥情感网

前提

最近看到Spring-Aop(面向切面编程)的实现基于动态代理,特此记录学习一下。

什么是动态代理?

  • 代理:当目标对象无法直接访问,创建一个客户端和目标对象之间的中介,这个中介可以被称为代理。
  • 动态: 使用反射机制,在程序执行的时候,创建代理类对象。
    动态代理:在程序执行中,利用jdk的反射机制,创建代理类对象,并动态指定要代理的对象

动态代理的作用

实现代理的方式?

1.静态代理

特点:

  • 代理类需要自己手动创建
  • 被代理的目标类是确定的

缺点:

  • 当需要被代理的目标类增加时,代理类也会成倍增加
  • 当接口中功能增加或者修改,对代理类、被代理类都会造成影响

2.动态代理

方式1:jdk动态代理
具体:基于java.lang.reflect的三个类:

  • invocationHandler
  • Method
  • Proxy

要求:目标类是一个实现接口类,必须实现某个接口
方式2:cglib动态代理
要求:目标类能被继承,即class和method不能是final

3.具体实现步骤

jdk动态代理实现步骤:

  1. 创建接口,定义目标类要实现的方法(功能)
  2. 创建目标类实现接口
  3. 创建InvocationHandler接口的实现类(代理类),重写invoke方法,在方法中完成需要代理的功能;
  4. 利用Proxy类创建代理对象------>newProxyInstance
  5. 类加载器实现接口给代理对象
  6. 利用代理对象调用目标类方法,自动调用invoke方法,使功能增强。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务