Spring Boot 单库事务

1:启动类配置

@EnableAspectJAutoProxy(exposeProxy = true)
@EnableTransactionManagement
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
public class ShoppingmallApplication {

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

2:调用业务方法

   @Override
    @Transactional
    public HttpResult simpleAdd(EquipmentSimpleDto es) {
        HttpResult r = new HttpResult();
        logger.info("==========简易添加==========开始...");
        try {
            String createUser = "shoppingmall";
            String remark = "简易添加";
            Date date = new Date();

            // 店铺
            Shops shops = new Shops(es.getShopName(), es.getOrgId());
            shops.setCreateUser(createUser);
            shops.setCreateTime(date);
            shops.setRemark(remark);
            ((ShopsService) AopContext.currentProxy()).save(shops); //本类方法调用
            logger.info("店铺已创建");

            // 模板
            ShoppingReceiptTemplate template = new ShoppingReceiptTemplate(es.getOrgId(), es.getShopName());
            template.setIsCommon(Boolean.FALSE);
            template.setCreateUser(createUser);
            template.setCreateTime(date);
            templateService.save(template);  //其他业务层调用
            logger.info("模板已创建");

            // 设备
            EquipmentInfo equipmentInfo = new EquipmentInfo(es.getEquipmentId(), es.getOrgId());
            // 设备-关联店铺
            equipmentInfo.setBindings(2);
            equipmentInfo.setShopsId(shops.getId());
            equipmentInfo.setShopsName(shops.getName());
            // 设备-关联模板
            equipmentInfo.setReceiptId(template.getId().toString());
            equipmentInfo.setReceiptName(template.getName());

            equipmentInfo.setCreateUser(createUser);
            equipmentInfo.setRemark(remark);
            equipmentInfo.setCreateTime(date);
            equipmentInfoService.save(equipmentInfo);
            logger.info("设备已创建");

            r.setCode(0);
            // 测试回滚
            /*
            int i = 0;
            int a =  123 / i;
           System.out.println(a);*/
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();  //关键
            r.setCode(-1);
            r.setMsg("异常:" + e.getMessage());
        } finally {
            logger.info("==========简易添加==========结束...");
        }
        return r;
    }

猜你喜欢

转载自www.cnblogs.com/eason-d/p/11834824.html
今日推荐