当前位置: 首页 > ai >正文

Spring Batch的2种STEP定义方式

Spring Batch的2种STEP定义方式

1. 第一种:基于Chunk-Oriented Processing(read,process,write)形式

适用场景

  • 大数据量批处理:适合需要分批次读取、处理并写入大量数据的场景(如数据库批量更新、文件导入导出)
  • 事务敏感操作:每个Chunk(数据块)作为一个独立事务提交,避免长事务导致的资源锁(如数据库锁表)
  • 数据流水线处理:需对数据逐条转换、过滤或聚合的场景(如ETL任务)

核心特点

  • 分块处理:通过chunkSize控制单次处理的数据量(例如每次读取100条),平衡内存与性能
  • 代码量较tasklet重:开发者需实现ItemReader ItemProcessor ItemWriter 接口,且STEP上下文需用到StepExecutionListener接口;自定义实现类。
@Bean
public Step print1Step(){return stepBuilderFactory.get("updateProductStockQuantityStep").listener(step1StepListener)//步骤监听.<Product, Product>chunk(10)//每批处理数量.reader(step1ItemReader)//读.processor(step1Processor)//处理.writer(step1Writer)//写.build();
}

2. 第二种:基于tasklet形式

适用场景

  • 非数据驱动任务:适合不需要分块处理的原子性操作,如初始化、清理或调用外部服务
  • 灵活控制逻辑:需自定义执行流程(如条件分支、循环)的场景
  • 单一事务需求:整个Step在一个事务中完成,适合不可拆分的操作(如文件压缩、发送通知)

核心特点

  • 简单接口:仅需实现 execute() 方法,返回RepeatStatus.FINISHEDCONTINUABLE支持循环执行)
  • 全事务控制:整个Tasklet作为单一事务,要么完全成功要么完全回滚
  • 无数据分块:不涉及ItemReader/Processor/Writer,适合非结构化任务
@Bean(name = {"printOverStep"})
public Step printOverStep(){return stepBuilderFactory.get("step3").tasklet((contribution, chunkContext) -> {...//业务逻辑return RepeatStatus.FINISHED;}).build();
}

RepeatStatus返回类型有

  • CONTINUABLE:表示当前任务尚未完成,需要继续执行下一次迭代(例如处理下一个数据块)
  • FINISHED:表示当前任务已执行完毕,终止后续迭代,执行下一个STEP

简单来说:需要继续干活就CONTINUABLE,干完了就FINISHED

http://www.xdnf.cn/news/16937.html

相关文章:

  • 数组和指针的关系
  • 从0搭建YOLO目标检测系统:实战项目+完整流程+界面开发(附源码)
  • 疯狂星期四文案网第28天运营日记
  • zookeeper持久化和恢复原理
  • 锻造企业级数字基座 - 从生死线到增长引擎的全景蓝图
  • 【设计模式】5.代理模式
  • VUE2 学习笔记16 插槽、Vuex
  • Python特性工厂函数详解:优雅管理属性验证
  • 昇思学习营-开发版-模型开发与适配
  • 【鸿蒙高级】
  • AI Competitor Intelligence Agent Team
  • 36. 有一个高 100%的 div,里面有一个高 100px 的 div,剩下一个自动填满
  • HiveMQ核心架构思维导图2024.9(Community Edition)
  • VBA 64位API声明语句第012讲
  • 实现游戏排行榜
  • Spring Boot 的事务注解 @Transactional 失效的几种情况
  • 从马武寨穿越关山
  • K8S部署ELK(五):集成Kibana实现日志可视化
  • [硬件电路-144]:模拟电路 - 开关电源与线性稳压电源常见的性能指标对比
  • Android设备认证体系深度解析:GMS/CTS/GTS/VTS/STS核心差异与认证逻辑
  • 【连接器专题】连接器做为固定连接介质的三种分类
  • 问题集000
  • Go语言常量
  • CAP 理论笔记
  • 前端开发(HTML,CSS,VUE,JS)从入门到精通!第四天(DOM编程和AJAX异步交互)
  • Mysql深入学习:InnoDB执行引擎篇
  • K8S几种常见CNI深入比较
  • Vue+SpringBoot+langchain4j实战案例:实现AI消息问答 及 Markdown打字机渲染效果
  • C语言与数据结构:从基础到实战
  • 基于 Spring Boot + Vue 实现人脸采集功能全流程