此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Framework 6.2.0! |
了解 Spring 框架的声明式事务实现
仅仅告诉您使用@Transactional
注释,添加@EnableTransactionManagement
添加到您的配置中,
并希望您了解这一切是如何运作的。为了提供更深入的理解,这个
部分介绍了 Spring 框架的声明式事务的内部工作原理
基础设施。
关于 Spring 框架的声明式,需要掌握的最重要的概念
事务支持是通过 AOP 代理启用的,并且事务
通知由元数据驱动(目前基于 XML 或 Comments)。AOP 的组合
生成一个 AOP 代理,该代理使用TransactionInterceptor
在
与适当的TransactionManager
推动交易的实施
围绕方法调用。
Spring AOP 在 AOP 部分介绍。 |
Spring 框架的TransactionInterceptor
提供事务管理
命令式和反应式编程模型。拦截器检测到所需的
transaction management 来检查方法返回类型。返回响应式
类型,例如Publisher
或 KotlinFlow
(或这些的子类型)符合 Reactive 的条件
事务管理。所有其他返回类型,包括void
使用 代码路径
命令式事务管理。
事务管理风格会影响所需的事务管理器。祈使的
事务需要PlatformTransactionManager
,而反应式事务使用ReactiveTransactionManager
实现。
由 当配置了 |
下图显示了在事务代理上调用方法的概念视图:
