【深入理解Java原理】Java 动态代理的理解与Cglib动态代理实现

 

Java 动态代理的理解与Cglib动态代理实现

 

什么是动态代理?

 先说下静态代理:

      也即是说,在程序运行前,已经有了编译好的类,这个就是静态代理,

动态代理:

     也即,在程序运行前, 代理类并不存在,而是在程序运行时,动态生成的类是动态代理类。

可能会有如下思考

代理模式是怎样的?用什么技术实现?

为什么要使用代理模式呢?有什么好处?

动态代理的应用场景有哪些?

 

先说说动态代理的实现吧:

动态代理主要使用的是Java 反射技术:

    JavaAPI 中关于InvocationHandler有大致这么一段描述,每个代理类都要实现InvocationHandler这个接口,每个代理类都会关联到一个handle,

当一个代理类调用方法时,会转到InvocationHandler的Invoke方法进行调用。

以下代码有引用以为牛人代码

看下InvocationHandler源码,我这就不再写一遍了。

 

public interface InvocationHandler
{

    public abstract Object invoke(Object obj, Method method, Object aobj[])
        throws Throwable;
}

 

 

 

 

 

这个invoke方法中有几个参数 :

        obj:表示我们要调用的真实对象

        method:表示我们要调用的真实对象的某个方法。

       aobj[] :表示真实对象某个方法接受的参数。

怎么用这个InvocationH

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值