写在前面:
目前开发使用的是springboot,然后对一些表操作会有要添加事务的操作。
springboot项目中的Application启动类中添加@EnableTransactionManagement注解开启事务。
接下来在需要添加事务的方法上添加@Transaction注解开启事务。@Transaction注解生效有几个需要注意的地方:
1.spring事务的支持是对数据库事务的支持。所以想要使用spring开启事务,首先数据库的引擎必须是支持事务的。
2.@Transaction需要加载public类型的方法上。其他类型的方法不报错,但是事务也不会生效。
3.@Transaction最好制定回滚的错误类型。roll back for = "具体的错误类型"。
因为spring事务管理默认是只会处理unchecked的异常:也就是runtime异常及其子类和错误(error)
checked异常包括Exception下除了runtimeException以外的异常。spring默认不会处理这些异常。所以需要我们在使用的时候在
@Transaction(rollbackFor = Exception.class)来指定回滚的异常。同样,也可以指定某个异常不回滚。可以使用norollbackFor = 具体的异常。
4.因为spring是通过代理对象来回滚事务的。所以,如果在一个为开启事务的方法中,直接调用本类中其他有事务的方法时,事务会失效。例如: