浅谈SpringBoot的动态代理

 


一、动态代理是什么?

代理就是面向切面编程(AOP)的一种实现,白话讲就是代替别人打理事务,我们平时使用的Spring AOP就是面向切面编程的一种实现,而动态代理就是AOP的底层原理。

二、代理分类

静态代理:在程序运行前就已经存在的代理类的字节码文件,代理对象和真实对象的关系在运行前就已经确定了。

动态代理:代理类就是在程序运行期间由JVM通过反射机制动态的生成,所以不存在代理类的字节码文件,动态生成字节码文件对象,代理对象和真实对象的关系在程序运行时期才确定的。

三、动态代理的实现方式

针对有接口使用JDK动态代理,需要使用java.lang.reflect包中的Proxy类与 InvocationHandler 接口。

针对没有使用接口使用CGLIB或javassist组件。

四、两者区别

静态代理优点:

业务类只需要关注业务逻辑本身,保证了业务类的重要性。

把真实对象隐藏起来,保护真实对象

缺点:

代理对象的额某个接口只服务于某种类型的对象,谁需要谁就创建。

若需要代理的方法很多,则要为每一种方法都进行代理处理

若借口添加了一个方法,不仅仅只有实现类实现,代理类也需要实现

动态代理优点:

不需要手动区创建代理类

缺点:

真实类必须实现接口

对多个真实类代理的话,Spring配置较多

posted @   Jz_Sam  阅读(1631)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示