您的位置:首页 > 其它

ssm手动提交事务或回滚事务

2018-01-25 10:26 253 查看
有时需提交当前事务后,后面业务逻辑才能正常使用,则需要先手动提交当前事务,然后在执行后续的

@Autowired  

private ApplicationContext ctx;  

DataSourceTransactionManager txManager = (DataSourceTransactionManager) ctx.getBean("transactionManager");  
        DefaultTransactionDefinition def = new DefaultTransactionDefinition();  
        def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);// 事物隔离级别,开启新事务  
        TransactionStatus txStatus = txManager.getTransaction(def);// 获得事务状态  
        ResultInfo resultInfo = ResultInfo.instance();
        Map<String,Object> map = null;
        try {  
        map = agreeInStorge(inNo);//业务逻辑处理代码,业务逻辑有问题则抛出自定义异常BusinessException
            txManager.commit(txStatus);//事务处理成功,提交当前事务  
        }
        catch (BusinessException e){//直接抛出异常,不要return,return以后会视为方法结束,继而去执行切面发短信的方法
        txManager.rollback(txStatus);//事务处理失败,回滚当前事务 
        throw e;
        }
        catch (Exception e) {  
        log.error("入库号:"+inNo+"入库失败");
        log.error(e);
            txManager.rollback(txStatus);//事务处理失败,回滚当前事务  
            throw new BusinessException("入库号:"+inNo+"入库失败");
        }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: