为了账号安全,请及时绑定邮箱和手机立即绑定

Spring boot 事务失效

/ 猿问

Spring boot 事务失效

慕哥5514020 2019-12-10 18:40:44

这是事务失效方法部分代码:

@Service
@Slf4j
public class UserServiceImpl
      extends ServiceImpl<UserMapper, SysUser>
      implements UserService {

   @Autowired
   private UserMapper userMapper;
   // TODO: 2019-12-09 事务不起作用
   @Transactional()
   @Override
   public int addUser() {
      SysUser user = new SysUser();
      user.setUsername("pengda1");
      user.setPassword("12344");

      userMapper.insert(user);

      int a = 1/0;
      return 0;

   }
}

这是调用test

@SpringBootTest
class UserServiceTest {

    @Autowired
    private UserService userService;

    @Test
    public void trantest(){
        userService.addUser();
    }
}

这是启动类:

@SpringBootApplication
@EnableWebMvc
@EnableTransactionManagement
@MapperScan(value = "com.example.intelligentsubstationmangement.mapper")
public class IntelligentSubstationMangementApplication {

   public static void main(String[] args) {
      SpringApplication.run(IntelligentSubstationMangementApplication.class, args);
   }

}

这还不是最坑的,最坑的是,我的另外一个测试方法又是回 滚的。

@Service
@Slf4j
public class TranscationalServiceImpl extends ServiceImpl<UserMapper, SysUser> implements TranscationalService {
   @Autowired
   private UserMapper userMapper;

   // 事务使用成功,可能是mybatis-plus的通用service会影响事务
   @Transactional
   @Override
   public int addUser() {
      log.info("【事务开始】");
      SysUser user = new SysUser();
      user.setUsername("pengda1");
      user.setPassword("12344");

      userMapper.insert(user);

      int a = 1/0;

      return 0;
   }
}

我曾怀疑可能mybatia-plus 的通用service出现问题,但是后来又重新写了个

TranscationalServiceImpl

后,就发现是没有问题。但是,现在就不知到问题是出现在哪里了,明明两个方法都是一样的啊。简直迷的很。

查看完整描述

1 回答

?
乌云下的风

implements UserService  和 implements TranscationalService 

是不是有区别啊

查看完整回答
1 反对 回复 2019-12-12

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信