2017-01-22 125 views
1

在我的JBeret Java批處理作業中,我需要將參數從一步傳遞到下一步。到目前爲止,我只想通過JobContext.setTransientUserData()來做到這一點。Java-Batch:如何將數據從一個步驟傳遞到另一個步驟?

我的問題是: transientUserData方式是最佳實踐方式還是有更好的選擇? 在批處理步驟之間傳遞參數很常見,或者在這方面步驟應該是自給自足的?

回答

2

是的,作業上下文瞬態用戶數據是在批處理規範(JSR 352)定義的步驟之間傳遞應用程序數據的標準機制。這種用法是可移植的,適用於所有兼容的實現。

大部分步驟是獨立的,但步驟也在工作中生活。因此,一步導出或使用來自另一步驟的應用程序數據以協調作業執行是很常見的。

在JBeret中,您可以聲明CDI bean爲@JobScoped,並將其注入需要訪問共享應用程序狀態的位置。

查看此JBeret test用於示例用法。

類似計算器的討論: How to put in custom scope/context (JobScoped - custom CDI scope) particular instance from request to make it injectable?

+0

非常感謝您對這個答案!我認爲關於批處理步驟和通過setTransientUserData()傳遞值相同。我忽略了@JobScoped註釋。這是我會這樣做的方式。注入bean看起來更簡潔,更容易,而不是將它作爲JobContext中的transientUserData傳遞。並感謝您與其他討論的鏈接。當我搜索時我沒有發現。 – uwl