一個有趣的、沒有普遍良好解決方案的問題是:我如何更改正在執行的 Spring 應用程式的配置?最近釋出的 Spring Batch Admin 1.0.0.M3 具有一項配置上傳功能,以一種特殊的方式解決了這個問題。在最近慕尼黑的 S2GForum 上有人詢問了此功能(如果您錯過了,請註冊參加五月份在倫敦和阿姆斯特丹舉行的活動),我很高興地告訴他此功能已存在,因此也許值得多花點時間介紹一下……
基本用例的螢幕截圖

我們首先看一下應用程式中的作業檢視。它顯示了 Web 應用程式可以啟動或監視的作業列表。
現在計劃上傳一個新的作業配置並檢視此檢視的變化。因此,我們從頂部導航中的“檔案”選單開始,然後單擊“配置”。這將顯示一個用於上傳檔案的簡單表單。如果指向 Spring XML 配置檔案,檢視將如下所示:

我們按下“上傳”按鈕,配置將被上傳並解析,然後
作業上傳檔案中的例項將被註冊以便啟動:

您可以在作業登錄檔中看到一個新條目(“test-job”),該條目是可在此程序中啟動的,因為應用程式引用了作業。 (未啟動的作業在程序外執行,但使用了相同的資料庫來儲存其JobRepository,因此它們及其執行情況會顯示在 UI 中。)
基本用例的變體
基本上傳用例的一個常見變體是上傳現有
作業配置的修改,而不是全新的配置。這很常見,因為人們通常需要調整執行時引數,尤其是在進行效能測試時。例如,我們可以更改其中一個
Step中的
commit-interval,在
作業中,以便在重複的專案處理過程中將更多(或更少)的專案分組並一起提交
Step。這可能會影響效能,並且由於更有效地利用了事務資源,因此
作業可能會執行得更快。我們可以透過在此應用程式中啟動
作業並檢查結果來直接衡量和驗證這一點(因為 Web 介面是面向資源的,因此也可以使用基於
curl).
它是如何工作的?
此用例實現的秘密在於,
作業配置檔案的解析方式是將其分解為單獨的 Spring
ApplicationContext例項,這些例項由其檔名跟蹤。執行環境(
JobLauncher、事務管理器、
DataSource等)由應用程式作為父上下文提供,而
Jobs則全部位於該環境的子上下文中。這意味著它們可以是易失的,並且它們的生命週期可以由應用程式中的服務管理。相關服務恰好透過包裝了
JobLoader是 Spring Batch 的標準組件。
下一步是什麼?
請訪問 Batch Admin 網站獲取更多資訊,並瞭解在哪裡獲取程式碼進行試驗。請記住即將於 5 月在 倫敦和 阿姆斯特丹舉行的 S2GForum 活動,屆時 Spring Batch 和 Spring Integration 的負責人(Dave Syer 和 Mark Fisher)將在一個會議中討論和演示該應用程式。