spring同类方法调用事务使用说明

#spring声明式事务使用说明:
#前提:
1.springboot 2.0.3.RELEASE
2.application.properties中的配置(默认配置)如下:
spring.aop.auto=true
spring.aop.proxy-target-class=true #是否基于类代理

#说明:
1.如果 save1没有声明事务,那么在 save2/save3上声明的事务,对save1 和 save2/save3都不生效;
2.如果 save1上有声明事务,在 save2/save3上不管是否有事务声明,save1 和 save2/save3都在事务中执行,而且在同一个事务中;
3.跨类调用的方法事务,属于常规方式,这里不做说明;

#以下是示例代码
@Service
public class ClassA {

    @Autowired
    private ClassB classB;

    public void testApi () {
        String status = "2";
        biz.save1(status);
    }
}

public interface ClassB {
    void save1(String status);
    void save2(String status);
}


@Service
public class ClassBImpl implements ClassB {
    @Autowired
    private TableAMapper tableAMapper;

    @Transactional
    @Override
    public void save1(String status) {
        TalbeA info = new TableA();
        info.setName("save1-" + status);
        tableAMapper.insertSelective(info);

        this.save2(status);
        // 或者
        this.save3(status);
    }

    @Transactional
    @Override
    public void save2(String status) {
        TalbeA info = new TableA();
        info.setName("save2-" + status);
        tableAMapper.insertSelective(info);
        
        if (status.equals("2")) {
            throw new RuntimeException("save2.e");
        }

        info = new TableA();
        info.setName("save2-" + status + status);
        tableAMapper.insertSelective(info);
    }
    
    @Transactional
    private void save3(String status) {
        TalbeA info = new TableA();
        info.setName("save3-" + status);
        tableAMapper.insertSelective(info);
        
        if (status.equals("2")) {
            throw new RuntimeException("save3.e");
        }
        
        info = new TableA();
        info.setName("save3-" + status + status);
        tableAMapper.insertSelective(info);
    }

}

 

转载于:https://my.oschina.net/hewenbin/blog/1941361

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值