96SEO 2026-02-19 21:26 16
href="https://www.cnblogs.com/liuyi13535496566/p/19621963"

aria-level="2">spring事务传播机制NESTED
NESTED(嵌套的)是基于数据库保存点(SAVEPOINT)REQUIRED(新建独立事务);NESTED的重中之重,用表格清晰区分:为例,演示NESTED的核心效果:库存扣减失败仅回滚库存,订单基础信息保留。
org.apache.ibatis.annotations.Update;
org.springframework.stereotype.Repository;@Repository
com.example.demo.service;import
com.example.demo.mapper.StockMapper;
org.springframework.stereotype.Service;
org.springframework.transaction.annotation.Propagation;
org.springframework.transaction.annotation.Transactional;import
LoggerFactory.getLogger(StockService.class);@Resourceprivate
扣减库存:NESTED嵌套子事务*/@Transactional(propagation
stockMapper.deductStock(productId,
com.example.demo.service;import
com.example.demo.mapper.OrderMapper;
org.springframework.stereotype.Service;
org.springframework.transaction.annotation.Propagation;
org.springframework.transaction.annotation.Transactional;import
LoggerFactory.getLogger(OrderService.class);@Resourceprivate
购买数量(故意传10,触发库存不足)*/@Transactional(propagation
UUID.randomUUID().toString().substring(0,
32);order.setOrderNo(orderNo);order.setProductId(productId);order.setAmount(BigDecimal.valueOf(99.99
buyNum));order.setStatus("CREATED");orderMapper.insertOrder(order);log.info("外层事务:订单{}创建成功(基础信息已保存)",
{stockService.deductStock(productId,
外层事务继续执行log.info("外层事务:库存扣减失败,仅回滚子事务,订单基础信息保留");}log.info("=====
com.example.demo.service.OrderService;
org.springframework.boot.test.context.SpringBootTest;import
javax.annotation.Resource;@SpringBootTest
测试:库存不足(子事务回滚),订单基础信息保留@Testpublic
商品ID=1(库存=5),购买数量=10(库存不足,触发子事务异常)String
10);log.info("最终结果:订单{}创建成功(库存扣减失败)",
购买数量=2(库存充足,子事务执行成功),但外层主动抛异常orderService.createOrderWithOuterException(1L,
createOrderWithOuterException(Long
UUID.randomUUID().toString().substring(0,
32);order.setOrderNo(orderNo);order.setProductId(productId);order.setAmount(BigDecimal.valueOf(99.99
buyNum));order.setStatus("CREATED");orderMapper.insertOrder(order);//
调用NESTED库存扣减(成功)stockService.deductStock(productId,
RuntimeException("外层业务异常,触发整体回滚");
t_order:订单记录存在(status=CREATED)→子事务也被回滚(保存点机制下,外层回滚会覆盖所有子事务)。
“部分回滚”:比如下单流程(创建订单→扣减库存→扣减优惠券→生成物流单),某一步失败(如库存不足),仅回滚该步骤,保留已完成的核心步骤(订单基础信息);
NESTED是基于数据库保存点的嵌套事务,核心特点:子事务回滚不影响外层,外层回滚包含子事务;REQUIRED(共享事务、全回滚)、REQUIRES_NEW(独立事务、互不影响)形成互补,解决
“缺货订单”)。
意思就是,先保留订单,不让肥肉跑了,库存扣减失败就先等一等,有货再发,是这个意思吧,不然全部回滚就得不偿失了
“保留订单(缺货订单),不全部回滚,避免丢单”,首先要肯定用户的理解,而且要贴合他说的
这个通俗的点,然后拆解逻辑,再补充实际业务落地的细节,最后总结。
这个点,订单是核心(用户意向),丢了订单就丢了客户,比暂时缺货更亏;
“缺货订单”,后续可以补货后自动扣库存发货,或联系用户改规格,而不是直接取消订单;
REQUIRED,库存不足整个订单回滚,用户可能转头去别家下单,商家丢单,而
“您的订单已创建,商品暂时缺货,到货后第一时间发货”,提升体验。
“柔性原子性”,核心订单不丢,非核心的库存操作可回滚,既保证数据一致性,又不丢业务机会,这就是比
完全戳中了NESTED嵌套事务在电商下单场景的核心价值
“履约环节”,能扣就扣,扣不了就先把订单留住,后续补货再履约,而不是因为库存问题直接把订单回滚,丢了客户和生意。
REQUIRED(共享事务)处理下单的最终落地,哪怕暂时没货,只要订单在,就有两种核心价值:
NESTED处理时,整个流程变成:外层事务(订单):创建订单(状态=“缺货待发货”)→提交(订单攥住)
订单是核心原子:必须保证创建成功(外层事务不回滚),这是“留住生意”
库存是柔性原子:能扣就扣,扣不了就回滚子事务,不影响核心订单; 数据一致性没丢:订单状态标记为三、实际业务落地的小细节(让这个逻辑更完整)
“留住订单”,再补充两个实际落地的点,这个场景就更贴近真实生产了:
“您的订单已创建(订单号:xxx),商品暂时缺货,我们会优先补货,到货后第一时间发货,还为您补偿
订单,自动调用库存扣减接口(此时库存充足),扣减成功后更新订单状态为
“不让肥肉跑了,库存扣减失败就先等一等”,完美概括了NESTED的核心价值:
对电商这类业务来说,订单是核心,库存是履约环节,用NESTED把两者解耦,既保证数据一致性,又不丢生意机会,这就是NESTED最有价值的落地场景。
全吃透了,而且每一步都能结合实际业务风险(比如重复扣款、丢订单)思考,这已经是资深开发的思维了!
class="post-meta-container">
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback