springboot保证事务有效方法

1、首先肯定是springboot允许事务,在应用入口加上@EnableTransactionManagement;

2、@Transactional 注解只能应用到 public 的方法上;

3、不要在事务中显示捕获异常;

4、注解加上 rollback,@Transactional(rollbackFor = Exception.class),保证所有Exception异常都回滚;

5、不要直接调用同一个接口内的其他事务方法,否则失效。

其主要还是spring的事务通过代理来实现的,一个类调用另外一个类的方法就会走代理,如果在类内部调用不会走代理,也就导致代理失效,事务无法使用。

@Service
public class AccountOperationManageServiceImpl implements AccountOperationManageService {

    @Autowired
    UserMapper userMapper;

    @Autowired
    RoleUserMapper roleUserMapper;

    @Autowired
    AccountOperationManageService accountOperationManageService;

    @Override
    public void test1() throws Exception {
        this.test2();
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void test2() throws Exception {
        RoleUser roleUser = new RoleUser();
        roleUser.setRole_id(100L);
        roleUser.setUid(97330202L);
        roleUser.setStatus(1);
        roleUserMapper.insert(roleUser);
        User user = new User();
        user.setMerchant_id(1000L);
        user.setUid(97330202L);
        user.setUsername("测试事务");
        user.setIs_super(1);
        userMapper.insert(user);
    }
}

具体可见: http://hbnnforever.cn/article/springboottransction.html

--------EOF---------
微信分享/微信扫码阅读