美文网首页
spring-8-事务

spring-8-事务

作者: blank_white | 来源:发表于2020-06-22 19:29 被阅读0次

spring 配置文件中需要添加的配置

<!--    声明事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="myDataSource"/>
    </bean>
<!--    事务注解驱动-->
    <tx:annotation-driven transaction-manager="transactionManager"/>

<!--    配置文件配置事务 声明事务方法,指定事务属性-->
    <tx:advice id="advice" transaction-manager="transactionManager">
        <tx:attributes>
<!--            方法名可使用通配符-->
            <tx:method name="bugGoods" propagation="REQUIRED" isolation="DEFAULT"
                       rollback-for="com.spyouth.ex.GoodsNotEnoughException,java.lang.NullPointerException"/>
            <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT"
                       rollback-for="java.lang.RuntimeException"/>
            <tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT"
                       rollback-for="java.lang.RuntimeException"/>
            <tx:method name="*" propagation="SUPPORTS" read-only="true" />
        </tx:attributes>
    </tx:advice>
<!--    配置 aop 关联上面的-->
    <aop:config >
        <aop:pointcut id="servicePt" expression="execution(* *..service..*.*(..))"/>
        <aop:advisor advice-ref="advice" pointcut-ref="servicePt"/>
    </aop:config>

注解方式

public class BuyGoodsServiceImpl implements BuyGoodsService {

    GoodsDao goodsDao;
    SaleDao saleDao;

    @Transactional(propagation = Propagation.REQUIRED,
            timeout = 20,
            isolation = Isolation.DEFAULT,
            rollbackFor = {NullPointerException.class,GoodsNotEnoughException.class}
    )
    @Override
    public void bugGoods(Goods goods) throws NullPointerException,GoodsNotEnoughException{

        Sale sale=new Sale();
        sale.setGid(goods.getId());
        sale.setNums(goods.getNums());
        saleDao.addSale(sale);


        Goods repertoryGoods=goodsDao.selectGoodsById(goods.getId());

        if (repertoryGoods==null){
            //没有商品
            throw new NullPointerException("没有此商品");
        }

        if (repertoryGoods.getNums()<goods.getNums()){
            //库存不足
            throw new GoodsNotEnoughException("库存不足");
        }

        goodsDao.sellGoods(goods);

    }
}

相关文章

  • spring-8-事务

    spring 配置文件中需要添加的配置 注解方式

  • java事务

    1、java事务介绍 2、JDBC事务 3、JTA事务 1、java事务介绍 java事务分类:JDBC事务、...

  • 事务、MySQL与Python交互、Python 中操作 MyS

    1、事务 事务操作分两种:自动事务(默认)、手动事务 手动事务的操作流程 开启事务:start transacti...

  • 数据库事务书目录

    数据库事务 事务概念 本地事务 全局事务 全局事务的定义 J2EE中全局事务的实现 全局事务的优缺点 基于消息的分...

  • MySQL事务

    MySQL-innodb-事务 事务的特性 事务的生命周期 失败的事务: 事务的控制语句 面试题 事务日志-red...

  • mysql事务隔离机制及其隔离级别、实现原理分析

    目录 事务特性ACID属性 并发事务带来的问题 事务隔离级别 事务实现原理 事务特性ACID属性 事务特性指的就是...

  • MULE事务配置

    在mule的事务可能为jdbc事务,jms事务,xa事务等,多种事务.这里讲解事务的几个动作: 相关的文档:htt...

  • 事务—事务模型

    程序猿基础知识的学习、理解、整理——事务(方方土) 事务,看似很简单,其实很复杂,作为一个程序猿,你对事务到底了解...

  • 事务—XA事务

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是XA事务?在什么场景下会出现XA事务? @Transac...

  • 事务—事务模式

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是事务模式?这里提到的事务模式,主要是指在系统设计过程中的...

网友评论

      本文标题:spring-8-事务

      本文链接:https://www.haomeiwen.com/subject/txbtghtx.html