前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring框架中动态代理

Spring框架中动态代理

作者头像
吉林乌拉
发布2019-08-14 17:37:55
1.6K0
发布2019-08-14 17:37:55
举报
文章被收录于专栏:吉林乌拉吉林乌拉吉林乌拉

在上一篇中我们已经介绍了AOP相关的知识,并且了解了spring是通过动态代理的方式实现AOP逻辑的。在spring中动态代理也分为两种一种是JDK动态代理,一种是CGLib动态代理。下面我们看一下这两种动态代理的区别。我们首先看一下在没有动态代理时,添加事物的的逻辑处理,也就上一篇中的事例。

虽然上述代码已经实现了我们的逻辑,但是在上一篇中我们已经介绍过了,上述代码的问题就是会有重复的有关事物的代码添加到业务类中,这样很不方便维护。解决的办法就是通过AOP方式来解决,下面我们分别采用JDK动态代理和CGLib动态代理技术来解决上述问题。

  • JDK动态代理

上述代码就是采用JDK动态代理技术实现AOP功能的,通过上述代码实现AOP功能虽然比较简单,但是有一个弊端就是JDK代理只能支持接口类型,也就是只能为接口提供动态代理功能,而CGLib动态代理则可以直接为类创建代理类。下面我们通过CGLib动态代理实现上述功能。

  • CGLib动态代理
  • JDK动态代理与CGLib动态代理的区别
  1. JDK动态代理只能为接口创建代理类,而CGLib动态代理而可以直接为类创建代理类。
  2. JDK动态代理创建代理类的速度要比CGLib动态代理创建代理类的速度要快。
  3. CGLib动态代理创建代理类的性能要比JDK动态代理创建代理类的性能要高。

所以在为单例对象创建代理类时,因为不需要频繁的创建代理对象,所以优先考虑用CGLib动态代理来创建,这样该代理类的执行时的性能比较高,反之则采用JDK动态代理创建代理类。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吉林乌拉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档