spring transaction
时间: 2023-04-21 15:01:05 浏览: 73
Spring事务是Spring框架中的一个模块,用于管理数据库事务。它提供了一种简单的方式来处理事务,使得开发人员可以更加方便地控制事务的边界和隔离级别。Spring事务支持多种事务管理器,包括JDBC事务、JTA事务和Hibernate事务等。它还提供了声明式事务管理和编程式事务管理两种方式,使得开发人员可以根据实际情况选择适合自己的方式来管理事务。
相关问题
spring transaction 源码解析
好的,非常感谢您的提问。Spring框架是一个非常流行的Java企业应用程序框架,其中之一的核心功能是事务处理。Spring的事务机制使用了AOP代理和JDBC标准,以简化使用事务的过程。
在具体实现上,Spring使用了一些关键的类和接口来进行事务处理相关的操作,其中包括PlatformTransactionManager接口、TransactionSynchronization接口和TransactionCallback接口等。事务处理的流程大致如下:
1. 获取TransactionDefinition,确定事务的属性。
2. 通过PlatformTransactionManager获取一个新的TransactionStatus,表示一个新的事务。
3. 执行真正的业务逻辑。
4. 如果业务逻辑执行成功,则提交事务(commit);否则回滚事务(rollback)。
5. 执行事务的后置回调(TransactionSynchronization)。
以上就是Spring事务处理的大致流程,其中最重要的类是PlatformTransactionManager,它提供了对事务管理的抽象,各种不同的Spring事务管理器(如DataSourceTransactionManager、JpaTransactionManager等)都通过实现此接口来进行具体的事务管理。
spring transaction中事物有哪些属性 传播行为
Spring事务中常用的属性有:隔离级别、传播行为、超时时间和只读属性。
其中,传播行为是指在多个事务方法相互调用时,事务如何进行传播和处理的行为。Spring框架定义了七种传播行为:
1. REQUIRED:默认值,如果当前已经存在事务,则加入到该事务中执行,如果不存在事务,则开启一个新的事务执行。
2. SUPPORTS:如果当前存在事务,则加入到该事务中执行,如果不存在事务,则不开启事务执行。
3. MANDATORY:强制要求当前存在事务,如果不存在事务,则抛出异常。
4. REQUIRES_NEW:无论当前是否有事务,都开启一个新的事务执行,如果当前存在事务,则挂起当前事务。
5. NOT_SUPPORTED:当前不支持事务,如果当前存在事务,则挂起当前事务。
6. NEVER:当前不允许事务,如果当前存在事务,则抛出异常。
7. NESTED:如果当前存在事务,则在嵌套事务中执行,如果不存在事务,则开启一个新的事务执行。在嵌套事务中,只有最外层事务可以提交或回滚,内层事务提交或回滚时,只是将内层事务的状态标记为已提交或已回滚,等到最外层事务提交或回滚时才会生效。如果最外层事务回滚,那么所有的嵌套事务都会回滚。