Transacational

spring-boot多数据源 事务不起作用问题

不使用数据库的情况下 排除自动配置url


@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@Transactional(value = "mysqlTransactionManager",rollbackFor=Exception.class)

项目 多数据源的情况下 要事务 要指定回滚的数据源才可以

spring boot 项目默认开启事务

要在启动类上 添加 @EnableTransactionManagement 注解(springboot 默认配置可以不加)

image-20210925003756465

异常不满足回滚要求
springboot默认检测RuntimeException和Error进行回滚,如果产生的异常不是这两类及其子类,springboot不会进行回滚。
解决办法:手动加上异常条件rollbackFor = {BizException.class,Error.class,RuntimeException.class}
其中 BizException extends Exception

@Transactional(rollbackFor = RuntimeException.class)

//这样指定了,error也一样会回滚
@Transactional(rollbackFor = Exception.class)

posted @ 2021-10-29 14:11  李广龙  阅读(107)  评论(0)    收藏  举报