Spring Boot
启用事务:1.开启事务管理
在启动类上面加事务管理注解:
@EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:annotation-driven />
2.事务注解详解
在service方法上面添加
@Transactional
注解
@Transactional
注解失效说明数据库引擎中MyIsam
不支持事务,必须是InnnoDB
引擎
@Transactional
所注解的方法只有是public
才起作用
@Transactional
所注解的方法所在的类,必须注解@Service
或@Component
等
需要调用该方法,且需要支持事务特性的调用方是在 @Transactional
所在的类的外面。注意:类内部的其他方法调用这个注解了@Transactional
的方法,事务是不会起作用的。
@Transactional注解事务范围,并不是所有异常都可以进行数据回滚,他只有是RuntimeException
类及其子类(中文称为:运行时异常/unchecked
异常/未检异常)异常的时候才会进行数据回滚。简单的说@Transactional
注解只有抛出RuntimeException
类及其子类异常(中文称为:运行时异常/unchecked异常/未检异常)才能回滚,其他的所有异常都不行,当然出现Error
的时候也是会回滚的
如果希望一般的异常也能触发事务回滚,需要在注解了@Transactional的方法上,将@Transactional回滚参数设为:
@Transactional(rollbackFor=Exception.class)
手动回滚事务:可以在service层方法的
catch
加TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
待补充.......