- Spring事务是基于JDBC事务实现
- 它拥有PlatformTransactionManager的一套接口
- 通俗点讲 就是数据库要支持事务 与Spring整合的框架也要支持事务
- 不仅可以在数据层 也可以在业务层进行事务管理
- 使用时要在方法上加@Transactional注解
- 一般@Transactional写在抽象方法上 表示该方法的重写实现方法都带有此注解
- @Transactional还可以写在类或者接口上 表示类成员方法都带有此注解
- 而且要配置事务管理器@Bean
- 事务管理器实现类为DataSourceTransactionManager
- 需要DataSourceBean依赖注入
- 最后告诉Spring开启了注解式事务驱动@EnableTransactionManagerment
@Transactional
@Bean
@EnableTransactionManagerment
- Spring事务角色 事务管理员+事务协调员
- 事务管理员一般是业务层
- 事务协调员一般是数据层
- Spring事务只有遇到Error和运行时异常才会回滚
- 事务传播行为是指事务协调员对于事务管理员的态度@Transactional中的propagation属性
- 事务传播行为有如下七点
Spring事务传播行为:都为Propagation的枚举属性 1、required(默认属性) 如果存在一个事务,则支持当前事务,如果没有事务,则开启一个新的事务 2、Mandatory 支持当前事务,如果当前没有事务,就抛出异常 3、Never 以非事务方式执行,如果当前存在事务,则抛出异常 4、Not_supports 以非事务方式执行操作,如果当前存在事务,把当前事务挂起 5、requires_new 新建事务,如果当前存在事务,则把当前事务挂起 6、Supports 支持当前事务,如果当前没有事务,就以非事务方式执行 7、Nested 支持当前事务,新增Savepoint点,与当前事务同步提交或者回滚