简单说下三种代理

  • 利用代理可以在运行时创建一个实现了一组给定接口的新类
  • 代理分为三个 静态代理、动态代理、cglib
  • 先说三种的特点:
    • 静态代理:代理要实现接口;可以在不修改目标对象的前提下扩展目标对象的功能 ;编译产生字节码,直接使用,速度快。
    • 动态代理:代理不用实现接口,但是目标对象要实现接口;用的反射技术,相对消耗资源。
    • cglig:代理无需实现接口;性能比反射好;底层是小而快的ASM框架实现。

静态代理

主要就是静态代理需要实现类。网上有很多例子,一看就明白。

动态代理

创建一个代理对象,需要使用Proxy类中的newProxyInstance方法,这个方法有三个参数

  • 类加载器
  • Class对象数组
  • 处理器
Object proxy = Proxy.newProxyInstance(ClassLoader,Class,handler)

代理都要实现InvocationHandler,然后实现invoke方法,主要是在invoke中实现操作。

没有定义代理类的名字,Sun虚拟机中的Proxy类将生成一个$Proxy开头的类名

cglig

  • 底层是用的ASM,没去了解 哈哈哈哈,知道是小而快的东西
  • 在Spring的AOP中使用了

参考了他的文章Java三种代理模式:静态代理、动态代理和cglib代理
可以看看,他写的比我好些,我只是总结一些自己的东西

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值