java动态代理

        动态代理是一种在运行时创建代理对象的技术,无需在编译期静态地创建代理类。代理对象可以实现代理模式,为一个或一组接口提供代理实现,这个代理对象可以在方法调用前后添加额外的处理逻辑,比如权限验证、日志记录、事务管理等。

在Java中,动态代理有两种实现方式:

  1. Java内置的动态代理(Java Proxy)

    • Java标准库中提供了java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现动态代理。InvocationHandler接口包含一个invoke方法,当通过代理对象调用方法时,这个方法会被调用,从而在方法调用前后添加额外的处理逻辑。
    1// 创建一个InvocationHandler实现类
    2InvocationHandler handler = new MyInvocationHandler(targetObject);
    3// 动态生成并返回代理对象
    4MyInterface proxy = (MyInterface) Proxy.newProxyInstance(
    5    MyInterface.class.getClassLoader(),
    6    new Class<?>[]{MyInterface.class},
    7    handler
    8);
  2. CGLIB库

    • CGLIB(Code Generation Library)是一个第三方库,它通过字节码操作技术在运行时生成一个目标类的子类作为代理类,实现方法拦截。相比于Java内置的动态代理,CGLIB可以代理非接口的类。

        无论是Java内置的动态代理还是CGLIB,其本质都是在运行时生成一个新的类,这个类能够代理原始对象的方法调用,从而在不修改原有业务代码的基础上,实现对业务方法的增强或控制。这种技术在面向切面编程(AOP)中有着广泛应用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值