zoukankan      html  css  js  c++  java
  • spring 事务

    简单示例:

    1,spring 配置文件中配置事务,并开启

    <!-- dbcp 数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="driverClassName" value="org.gjt.mm.mysql.Driver" />
      <property name="url" value="jdbc:mysql://localhost:3306/weipai?useUnicode=true&amp;characterEncoding=UTF-8" />
      <property name="username" value="root" />
      <property name="password" value="WeiPai_111111" />
    </bean>
        
    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 启用事务管理器 -->
    <tx:annotation-driven transaction-manager="transactionManager" />

    2,在方法上添加注解 @Transactional

    // 添加注解就搞定了,如果这个方法产生异常就回滚
    @Transactional
    public void addCart() {
        // 库存 -1
        // 购物车 +1
    }

    事务的传播属性

    REQUIRED:如果已经存在就使用当前事务,没有就新建,默认
    REQUIRES_NEW:如果已经存在事务就挂起,当前方法会新开一个事务

    @Transactional
    public void checkAccountBalance() {
        // 获取用户余额
        // 获取商品价格
        // 如果用户余额大于商品价格,添加到购物车
        addCart();
    }
        
    @Transactional(propagation=Propagation.REQUIRED)
    public void addCart() {
        // 库存 -1
        // 购物车 +1
    }

    事务的隔离级别

    参见 springboot 事务和 mysql 事务隔离级别博文

  • 相关阅读:
    git push :推送本地更改到远程仓库的三种模式
    GIT版本库回滚【图文版】
    微服务架构的分布式事务解决方案
    断路器-Hystrix的深入了解
    Elasticsearch顶尖高手系列课程推荐
    Dockerfile分离构建LNMP环境部署wordpress
    ELK 聚合查询
    tomcat日志采集
    ELK采集之nginx 之高德地图出城市IP分布图
    Elasticsearch 安装与集群配置
  • 原文地址:https://www.cnblogs.com/huanggy/p/9503101.html
Copyright © 2011-2022 走看看