动态代理类的底层实现原理是什么?
老师,为什么为一个业务类配置了动态代理类后,调用业务类的方法时,就会自动调用代理类的invoke方法?jdk底层是如何实现的,能否依据jdk源码讲讲实现原理?这样理解的会更深刻
正在回答 回答被采纳积分+1
同学你好。源码阅读不是一句两句可以解释清楚的,可能需要同学好好研究一下。慕课网的手记中就有大量的相关文章 ,老师在这里为你推荐两篇:
1、https://www.imooc.com/article/272897?tdsourcetag=s_pctim_aiomsg 这个从代码角度切入,先实现了一个简易版的动态代理,然后分析了jdk8的源码
2、https://www.imooc.com/article/21339?tdsourcetag=s_pctim_aiomsg 这一篇则是给了一个具体情境,讲了代理模式,包括java动态代理和CGLib的原理
祝学习愉快~
同学你好。老师在视频中其实已经把原理说的挺清楚了,Proxy.newProxyInstance
底层只是利用了反射,根据类加载器和this创建了一个动态代理对象。使其使用代理对象proxy调用每个方法之前,比如视频中的增删改查方法,都会先到我们写的invoke方法中去,执行到Method.invoke方法时,其实就相当于直接执行我们在UserDaoImpl中定义的原方法。
通俗来讲,可以这样理解,动态代理对象就是程序在运行时临时组装的对象,它的方法比原对象的方法多了一层包裹,我们自己实现的invoke方法制定了包裹的外层是什么逻辑。
如果解答了同学的疑问,望采纳~
祝学习愉快~
- 参与学习 人
- 提交作业 323 份
- 解答问题 8263 个
本阶段将带你学习主流框架SSM,以及SpringBoot ,打通成为Java工程师的最后一公里!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星