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

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.dtcms.com/a/312685.html

相关文章:

  • spring-ai-alibaba 学习(二十)——graph之检查点
  • VUE2 学习笔记16 插槽、Vuex
  • 大屏项目展示
  • python学智能算法(三十一)|SVM-Slater条件理解
  • 【MySQL进阶】------MySQL程序
  • 全排列二(回溯算法)
  • 位图:用bit改变存储格局
  • Linux 文件与目录操作命令宝典
  • Apache Shenyu 本地启动及快速入门
  • 【Bluetooth】【基础篇】第二章 关于蓝牙协议栈架构与其硬件方案架构大致概述
  • 【JS】JavaScript中的this详解
  • Android 优化 - 日志 Log
  • LeetCode513:找树最左下角的值(bfs+dfs)
  • 【鸿蒙高级】
  • [硬件电路-148]:数字电路 - 什么是CMOS电平、TTL电平?还有哪些其他电平标准?发展历史?
  • 动感按钮:如何打造交互感十足的点击动画效果
  • 【1】WPF界面开发入门—— 图书馆程序:登录界面设计
  • 基于图像识别与分类的中国蛇类识别系统
  • [硬件电路-151]:数字电路 - 模拟电路与数字电路的本质
  • 【数据结构】二叉树的顺序结构实现
  • SQL注入SQLi-LABS 靶场less31-38详细通关攻略
  • 托福阅读38-3
  • 使用AssemblyAI将音频数据转换成文本
  • AI生成图片工具分享!
  • Linux的权限概念
  • 关于Web前端安全之XSS攻击防御增强方法
  • 【视频内容创作】PR的关键帧动画
  • 机器学习第三课之逻辑回归(三)LogisticRegression
  • Python-初学openCV——图像预处理(五)
  • 团队独立思考的力量