Spring boot +mybatis 实现声明式事务管理

来源:互联网 发布:40岁没结婚的女人知乎 编辑:程序博客网 时间:2024/05/12 14:34

在项目中,一个函数需要进行两条sql操作,两条sql操作为一个整体,期望是要不一起执行,要不都不执行,所以引入了事务管理。


遇到的问题&未解决的坑:


在一个@service实现了一个事务管理的函数,发现在另一个service里面添加此方法的@Autowired注解,事务管理失效


解决办法:

在@controller层调用此方法时添加   @Transactional注解


方法以及调用添加的注解:


@Transactional(isolation = Isolation.READ_COMMITTED,propagation = Propagation.REQUIRED,readOnly = false,rollbackFor = {Exception.class})


只要是函数内部发生exception及实现回滚

方法级别:





controller层级别:





新发现 :



如果实现事务管理的service不被别的service调用,则不需要在controller层添加事务注解,如果被别的service调用,则事务管理失效,此时可以在controller层加上事务管理的注


解,service层加不加事务管理注解不起作用




原创粉丝点击