首页 > 解决方案 > Spring代理默认实现

问题描述

我想我对spring如何使用带有注释的代理概念有一个很好的了解,@Transactional但我找不到任何关于“默认”实现的信息。基本上我正在寻找的是包装原始方法调用的代码(来自包装对象的方法)。

标签: springspring-transactionscglib

解决方案


没有默认实现之类的东西,因为它完全取决于实现您添加@Transactional注释的方法的类。如果该类继承自接口,则将使用JDK 动态代理。如果没有,那么将使用一个名为 CGLIB 的外部库来创建代理。动态代理将创建一个实现您的目标类也实现的所有接口的代理,而 CGLIB 将创建一个扩展您的目标类的代理。

还要确保阅读这个关于动态代理和 CGLIB 代理之间区别的SO 问题,因为它也包含有价值的信息。


推荐阅读