动态代理

动态代理

老师,我们前面的课程将的目标类,好像都没有实现接口啊。 

有接口的一般工作中是不是很少遇见啊,

如果是有接口的, 底层会帮我们创建一个反射类啊,我们正常去创建切面类实现扩展的功能就行了吧? xml中应该怎么配置指向和之前是一样的。 只是底层实现的原理不一样了。对吧。 

2、之前不是说aop是基于asjectjweave这个组件实现的吗 ? 这个组件和CGlib是一个吗?

3、我们创建的切面类就是代理类吧, 对目标类进行或者,而底层的实现是取决于JDK动态代理模式或者CGlib组件代理模式吧?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿园 2021-05-21 17:54:46

同学你好

1、在实际工作中是否实现接口还是需要根据具体情况而定哦

2、是的,但是可以在xml中配置如下代码,表示使用CGLIB动态代理

<aop:aspectj-autoproxy proxy-target-class="true"/>

3、是的,同学的理解是正确的,asjectjweave这个组件跟CGlib并不是一个;aspectjweaver简单理解是支持切入点表达式等,而CGLIB是代理模式

4、可以这么理解,如果目标类实现了接口底层会优先使用jdk动态代理,如果没有实现接口则会使用CGlib代理

祝学习愉快~


rock221 提问者 2021-05-21 14:43:18

asjectjweave和CGlib 不是一码事,  ioc中的配置,切点,声明切面类的底层是由asjectjweave提供的, 而切面中所产生的代理类以及目标类的获取 ,是由CGLib底层实现的, 最后又spring 整合,完善 ,所以这些是息息相关的,  我们学的动态代理, 是底层如何实现 获取目标类的一个方法,还是如何运行 。实际上aop这些都不需要我们去操作, 只需要实例化切面类, 并且完成切面类中的扩展功能即可。 其他底层的操作spring都帮我们封装了。 对吧 

  • 这就是框架的魅力,几个配置就帮你实现了底层繁琐且重复的事情,而繁琐又重复的事情就是框架。可以了解底层,但没必要重复造轮,何况也造不出比spring更牛逼的轮

    2021-10-17 11:08:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师