1.介绍
检测事务对于审计目的或处理未实现良好事务约定的复杂代码库可能很有用。
2.事务配置
为了使事务在 Spring 中工作,必须启用事务管理。 如果使用具有 spring-data-* 或 spring-tx 依赖项的 Spring Boot 项目,Spring 将默认启用事务管理。 否则,必须启用事务并显式提供事务管理器。
首先,需要在@Configuration 类中添加@EnableTransactionManagement 注解。 为项目启用Spring 的注解驱动事务管理。
接下来,必须提供 PlatformTransactionManager 或 ReactiveTransactionManager bean。 这个 bean 需要一个数据源。 以选择使用一些常见的库,例如 H2 或 MySQL 的库。
3.使用TransactionSynchronizationManager
Spring 提供了一个名为 TransactionSynchronizationManager 的类。这个类有一个静态方法,可以知道是否处于事务中,称为 isActualTransactionActive()。
单元测试
添加了@Transactional注解,返回true
@Test
@Transactional
public void test1() {
assertTrue(TransactionSynchronizationManager.isActualTransactionActive());
}
当删除 @Transactional 注解时,返回 false:
@Test
public void test2() {
assertFalse(TransactionSynchronizationManager.isActualTransactionActive());
}