35分布式电商项目 - 注解式事务配置(运营商后台)

简介: 35分布式电商项目 - 注解式事务配置(运营商后台)

项目已提交至Github

地址:https://github.com/ylw-github/pingyougou.git

版本:2646456bff33de6ccecb9a598b156fecef78abed

引出问题

编写单元测试,新增add 方法。

/**
* 增加
*/
@Override
public void add(Goods goods) {
  goods.getGoods().setAuditStatus("0");
  goodsMapper.insert(goods.getGoods()); //插入商品表
  int x=1/0;
  goods.getGoodsDesc().setGoodsId(goods.getGoods().getId());
  goodsDescMapper.insert(goods.getGoodsDesc());//插入商品扩展数据
  saveItemList(goods);//插入商品 SKU 列表数据
}

在插入商品表后,人为制造一个异常。我们运行程序,新增商品数据,观察运行结果。

通过观察,我们发现,程序发生异常 ,商品表仍然会存储记录,这是不符合我们要求的。这是因为我们目前的系统还没有配置事务。

配置事务

1.配置文件

在 pinyougou-sellergoods-service 工程的 spring 目录下创建 applicationContext-tx.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx.xsd
 http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.xsd">
 <!-- 事务管理器 --> 
 <bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
   <property name="dataSource" ref="dataSource" /> 
 </bean> 
 <!-- 开启事务控制的注解支持 --> 
 <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
2.在方法上添加注解
/**
* 服务实现层
* @author Administrator
*
*/
@Service
@Transactional
public class GoodsServiceImpl implements GoodsService{
........
}

经过测试,我们发现,系统发生异常,商品表不会新增记录,事务配置成功。

最后需要将所有涉及多表操作的服务类添加事务注解。

目录
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
2月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
28天前
|
监控
Saga模式在分布式系统中保证事务的隔离性
Saga模式在分布式系统中保证事务的隔离性
|
3月前
|
NoSQL Java Redis
面试官:项目中如何实现分布式锁?
面试官:项目中如何实现分布式锁?
95 6
面试官:项目中如何实现分布式锁?
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
50 1
|
3月前
Saga模式在分布式系统中如何保证事务的隔离性
Saga模式在分布式系统中如何保证事务的隔离性
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
49 0
|
4月前
|
资源调度 Java 调度
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
|
4月前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
99 0
|
4月前
|
Java 测试技术 Spring
分布式之配置中心
分布式之配置中心
56 1