SpringBoot使用默认的配置实现数据库事务

MySQL默认的存储引擎为MyISAM不支持事务,需要改成InnoDB才能支持事务,此处如何查看与修改略过。

网上很多人说在启动类中加入@EnableTransactionManagement注解才能生效,但在实际的开发过程中发现不加也可以,原因是SpringBoot自动开启了事务

@Transactional注解能加在类或者方法上,优先级:方法>类

事务生效总结:

  方法A调用方法B事务生效总结:

  A有T  B有T  生效

  A有T  B无T  生效

  A无T  B有T  不生效

小例子

@Transactional
@Service
public class DemoService {

    @Autowired
    private DemoDao demoDao;
    
    public void test(User user) {
        try{
            demoDao.insert(user);
            int i = 1/0;
        } catch (Exception e) {
            // 事務已經回滾
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }

}
原文地址:https://www.cnblogs.com/zhanzhuang/p/11957161.html