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.pswp.cn/web/91876.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91876.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91876.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端JS-調用單刪接口來刪除多個選中文件

當開發中遇到&#xff1a;服務端沒有刪除多個文件功能接口&#xff0c;只有單個刪除文件功能接口時&#xff0c;會遇到如何多選刪除文件效果最佳。await Promise.all(selectedDocPaths.map(async (path) > {try {await fileDelete(path)} catch (err) {throw new Error(刪除…

機器學習——過采樣(OverSampling),解決類別不平衡問題,案例:邏輯回歸 信用卡欺詐檢測

下采樣&#xff1a;機器學習——下采樣&#xff08;UnderSampling&#xff09;&#xff0c;解決類別不平衡問題&#xff0c;案例&#xff1a;邏輯回歸 信用卡欺詐檢測-CSDN博客 &#xff08;完整代碼在底部&#xff09; 解決樣本不平衡問題&#xff1a;SMOTE 過采樣實戰講解 …

Ettus USRP X440 進行“超短波個人衛星信號的偵查與干擾”任務

結合 Ettus USRP X440 進行“超短波個人衛星信號的偵查與干擾”任務&#xff0c;可以構建一個高性能、靈活可編程的電子對抗系統原型平臺。以下是面向科研/工程/軍用驗證場景的構思和技術文案&#xff1a; &#x1f6f0;? 項目名稱建議&#xff08;可選&#xff09;&#xff1…

如何在出售Windows11/10/8/7前徹底清除電腦數據

為了保護您的個人數據&#xff0c;在出售電腦前徹底清除數據是一個明智之舉。然而&#xff0c;僅僅刪除文件是不夠的&#xff0c;因為恢復工具通常可以恢復它們。因此&#xff0c;本指南分享了如何在出售電腦前清除數據&#xff0c;包括 Windows 11/10/8/7&#xff0c;確保您的…

Go語言實戰案例:多協程并發下載網頁內容

本文是《Go語言100個實戰案例 網絡與并發篇》第6篇&#xff0c;實戰演示如何使用 Goroutine 和 Channel&#xff0c;實現多協程并發抓取網頁內容&#xff0c;提升網絡請求效率&#xff0c;為構建爬蟲、內容聚合器、API 批量采集器打下基礎。一、實戰背景在互聯網項目中&#x…

分享鏈接實現狀態共享

有這么一個場景&#xff1a;就是有一些列表頁面&#xff0c;然后上面是有一些篩選項的&#xff0c;我去對這個列表做了一些篩選出來一個結果&#xff0c;然后我想把這個鏈接&#xff0c;或者說把這個篩選結構給分享出去&#xff0c;讓別人在打開這個頁面的時候&#xff0c;也是…

Fay數字人如何使用GPT-SOVITS進行TTS轉換以及遇到的一些問題

一、GPT-SoVITS 簡介 GPT-SoVITS 是一款開源的語音合成&#xff08;TTS&#xff09;工具&#xff0c;結合了 GPT 模型的文本理解能力與 SoVITS&#xff08;Sound of Voice In Text-to-Speech&#xff09;的聲紋模擬技術&#xff0c;能夠實現高自然度、個性化的語音合成。它支持…

HTML 顏色值

HTML 顏色值 引言 在網頁設計和開發中,顏色是一個重要的元素,它能夠幫助用戶更好地理解內容,提升視覺效果。HTML 顏色值是用于指定網頁中元素顏色的一種標準表示方法。本文將詳細介紹 HTML 顏色值的種類、表示方法以及在實際應用中的使用技巧。 HTML 顏色值種類 HTML 顏…

關于記錄一下“bug”,在做圖片上傳的時候出現的小問題

項目場景&#xff1a;之前的話寫過csdn&#xff0c;最近出現了一些小事情&#xff0c;所以耽誤了好久沒有更新&#xff0c;最近把以前的項目拿出來然后改了下環境就出現了一些問題&#xff0c;該項目使用SpringBoot3.5 SpringMVC Mybatis-Plus3.5.0&#xff0c;然后權限控制采…

數據結構:基礎知識和鏈表①

一、概念程序數據結構算法1.描述數據存儲和操作的結構 2.操作數據對象的方法二、衡量代碼的質量和效率 無論代碼操作數據量多大&#xff0c;希望程序代碼的運行時間保持恒定 隨著數據的增長&#xff0c;程序運行時間緩慢增長隨著數據的增長&#xff0c;程序運…

進階向:自動化天氣查詢工具(API調用)

自動化天氣查詢工具&#xff08;API調用&#xff09;完全指南天氣數據是日常生活中經常需要查詢的信息之一。本教程將介紹如何使用Python編寫一個自動化天氣查詢工具&#xff0c;通過調用開放的天氣API獲取實時天氣數據。這個工具適合完全不懂編程的新手學習&#xff0c;將從最…

【ROS2】常用命令

1、目錄結構在 ROS 2 包中&#xff0c;launch、urdf、rviz&#xff08;通常指 RViz 配置文件&#xff09;、config 等文件夾應直接放在包的根目錄下&#xff08;與 robot_arm/ Python 模塊目錄同級&#xff09;。這是 ROS 2 社區的通用約定&#xff0c;便于工具&#xff08;如 …

基礎組件(三):mysql連接池

文章目錄一、MySQL連接池設計1. 連接池解決了什么問題&#xff1f;連接池的作用 &#xff08;好處&#xff09;為什么不創建多條連接而用連接池2. 同步和異步連接池的區別同步連接池&#xff08;場景局限&#xff0c;應用服務器啟動時初始化資源&#xff09;異步連接池&#xf…

FI文件包含漏洞

本地文件包含&#xff08;LFI&#xff09;文件包含開發人員將可重復使用的內容寫到單個文件中&#xff0c;使用時直接調用此文件&#xff0c;無需再次編寫&#xff0c;這種調用文件的過程一般被稱為文件包含。這樣編寫代碼能減少代碼冗余&#xff0c;降低代碼后期維護難度&…

rapidocr_web v1.0.0發布了

建立RapidOCRWeb獨立倉庫 終于將web這塊代碼移了出來&#xff0c;成立了獨立倉庫RapidOCRWeb (https://github.com/RapidAI/RapidOCRWeb )。這樣以來&#xff0c;RapidOCR倉庫下的各個衍生項目均有自己的獨立倉庫&#xff0c;可以單獨控制發版和維護。這也算是為RapidOCR減負了…

Arduino IDE離線安裝ESP8266板管理工具

文章目錄概要官網地址開發板管理地址安裝ESP8266開發板支持離線安裝額外記錄NODE啟動服務概要 Arduino IDE離線安裝ESP8266板管理工具&#xff0c;在線安裝因為網絡或者https的問題不能安裝 官網地址 Adruino&#xff1a;https://www.arduino.cc/ ESP8266項目&#xff1a;<…

兩款免費數據恢復軟件介紹,Win/Mac均可用

數據已成為我們生活與工作中不可或缺的重要組成部分。無論是珍貴的家庭照片、關鍵的工作文檔&#xff0c;還是重要的學習資料&#xff0c;都以數據的形式存儲在各類設備中。然而&#xff0c;數據丟失的情況卻時常發生&#xff0c;可能是誤操作刪除&#xff0c;可能是設備意外損…

Java開發中敏感信息加密存儲全解析:筑牢數據安全防線

Java開發中敏感信息加密存儲全解析&#xff1a;筑牢數據安全防線 一、引言 1.1 敏感信息存儲的現狀與挑戰 在數字化時代&#xff0c;數據已然成為企業和組織的核心資產之一&#xff0c;而敏感信息的存儲更是重中之重。從日常的用戶登錄密碼、身份證號碼&#xff0c;到金融領域…

list的使用和模擬

(一)list的了解 (1)簡單了解 list的文檔介紹 list是基于雙向鏈表的序列式容器&#xff0c;支持雙向迭代和任意位置的常數時間插入刪除&#xff0c;相比 array、vector 等容器在這類操作上更高效&#xff0c;但不支持隨機訪問&#xff08;訪問需線性遍歷&#xff09;且因額外…

Docker 初學者需要了解的幾個知識點 (五):建容器需要進一步了解的概念

之前在《Docker 初學者需要了解的幾個知識點》幾篇文章里&#xff0c;我們梳理了 Docker 的核心概念&#xff08;如鏡像、容器、網絡等&#xff09;&#xff0c;但在實際搭建 ThinkPHP 容器環境時&#xff0c;又遇到了一些更具體的術語和配置場景。這些內容和實操結合緊密&…