溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring Batch 2.0的新特性有哪些

發(fā)布時(shí)間:2021-07-14 09:09:48 來源:億速云 閱讀:131 作者:chen 欄目:編程語言

這篇文章主要介紹“Spring Batch 2.0的新特性有哪些”,在日常操作中,相信很多人在Spring Batch 2.0的新特性有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Spring Batch 2.0的新特性有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

這一版本的新特性可以分為四類:對(duì)Java 5的支持、非順序執(zhí)行、增強(qiáng)的可伸縮性以及注解。

對(duì)Java 5的支持:

Spring Batch 2.0版支持Java 5泛型和參數(shù)化類型,以便可以在編譯時(shí)檢查類型安全性。例如,ItemReader接口現(xiàn)在有了一個(gè)類型安全的read方法。

非順序執(zhí)行:

這其實(shí)包括3個(gè)新特性——條件、暫停和并行執(zhí)行。憑借這些特性,各步驟可以按非線性順序執(zhí)行。即使工作(Job)中的某個(gè)步驟(step)失敗,整個(gè)工作也依然能夠完成。有條件執(zhí)行(Conditional execution)根據(jù)***一個(gè)ExitStatus把工作劃分為不同的分支。這也包括FAILED狀態(tài)下執(zhí)行分支任務(wù)的能力,也就是說一個(gè)步驟的失敗不再是整個(gè)工作的致命錯(cuò)誤。暫停執(zhí)行(Pause execution)可以用來停止或等待外部命令(explicit instruction),這在業(yè)務(wù)規(guī)則需要人工干預(yù)以檢查業(yè)務(wù)關(guān)鍵數(shù)據(jù)是否有效時(shí)非常有用。而對(duì)于多步驟的并行執(zhí)行(parallel execution),各步驟間互相獨(dú)立,用戶可以自行指定哪些分支能夠并行執(zhí)行。

可伸縮性:

新版采用兩種方法支持多進(jìn)程的并行執(zhí)行:遠(yuǎn)程分割及劃分。遠(yuǎn)程分割是在對(duì)數(shù)據(jù)結(jié)構(gòu)沒有任何詳盡認(rèn)知的情況下對(duì)一個(gè)步驟的特定工作進(jìn)行劃分的一項(xiàng)技術(shù)。任何輸入源都可以動(dòng)態(tài)分割,只需要通過單一進(jìn)程讀取該輸入源,并將其作為一整塊發(fā)送給遠(yuǎn)程工作進(jìn)程即可。遠(yuǎn)程工作進(jìn)程實(shí)現(xiàn)了listener模式,對(duì)請(qǐng)求作出響應(yīng),處理數(shù)據(jù)且異步發(fā)回應(yīng)答。請(qǐng)求和應(yīng)答的傳輸必須是持久性的、有保證的,且只有單一的消費(fèi)者,這些特性在所有JMS實(shí)現(xiàn)中都已具備。Spring Batch正是在Spring Integration基礎(chǔ)上構(gòu)建的遠(yuǎn)程分割特性,因此它根本不必關(guān)心消息中間件的實(shí)際實(shí)現(xiàn)。

劃分是實(shí)現(xiàn)可伸縮性的另一種方式,相比之下,它需要知道輸入數(shù)據(jù)的結(jié)構(gòu),比如主鍵的范圍、或者要處理文件的名字。這種模式的好處是,分區(qū)中的每個(gè)元素的處理器都可以看作是正常Spring Batch工作中的單個(gè)步驟。它們不用實(shí)現(xiàn)任何特定模式,因而易于配置和測(cè)試。劃分比遠(yuǎn)程分割更具伸縮性,這是因?yàn)樵谕坏胤阶x取所有輸入數(shù)據(jù)時(shí)不會(huì)產(chǎn)生序列化瓶頸。在Spring Batch 2.0 中,劃分由兩個(gè)接口支持:PartitionHandler 和StepExecutionSplitter。

基于注解的配置:

Spring Batch組件如reader、writer、processor、listener,都可以使用注解來配置,也都可以插入到任務(wù)的某個(gè)步驟中去。這是通過針對(duì)Spring Batch的XML命名空間來實(shí)現(xiàn)的。

新版本在應(yīng)用程序監(jiān)測(cè)方面也有一些變化,包括對(duì)執(zhí)行或跳過項(xiàng)目的計(jì)數(shù)、記賬;在每個(gè)階段對(duì)所有項(xiàng)目讀取、處理和寫入的分割計(jì)數(shù)等方面的統(tǒng)計(jì)。對(duì)于那些沒有把執(zhí)行劃分成讀取、處理、寫入等各個(gè)步驟(或tasklet)的應(yīng)用來說,這些統(tǒng)計(jì)更多的是為了綜合了解而絕非必需,但多數(shù)情況下,這總比只存儲(chǔ)項(xiàng)目總數(shù)更可取。

SpringSource計(jì)劃在企業(yè)級(jí)Batch產(chǎn)品中提供劃分和遠(yuǎn)程分割、還有管理和調(diào)度等方面的完整的運(yùn)行時(shí)解決方案。其未來的路線圖還包括為 Spring Batch 2.1增加Spring 3.0依賴(同時(shí)保留2.5.6為可選)。正是出于這樣的計(jì)劃,新版本中涵蓋的特性以工作和步驟的配置居多,尤其是在配置過程中使用了Spring Expression Language (EL)的延遲綁定(late binding),該延遲綁定的語法和Spring Batch 2.0中的基本相同,只是所提供的特性更多、靈活性更大。

到此,關(guān)于“Spring Batch 2.0的新特性有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI