回答
最後,Spring Batch 3.0現在支持Job Scope
:What's new in Spring Batch 3.0
如果你的dataHolder bean持有狀態,你可以用適當的bean scope原型
但是在原型範圍內,每當我從作業步驟引用dataHolder bean時,都會創建一個新的bean?我,我想從所有給定作業的步驟中使用相同的dataHolder bean。 –
我仍然不確定您的用例,但可以使用http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html –
完成簡單的線程安全共享狀態謝謝michael的幫助,爲了解決我的問題,我最終創建了一個dataHolderResolver Bean(Singleton),其中包含返回與給定jobId關聯的DataHolder的方法getDataHolder(int jobId)。我將dataHolder bean聲明爲原型,並且我使用dataHolderResolver bean上的lookup-method spring特性來獲取新的dataHolder引用(如果它尚未爲給定的jobId創建並緩存)。但是,我認爲在Spring批次的下一個版本中有'作業'範圍是有用的。 –
一個JIRA已經開通了一些時間前就對這個問題的春天批次問題追蹤: https://jira.springsource.org/browse/BATCH-1701
pull請求已經提交,以及,希望它會很快被合併,因爲我有這樣的使用情況下,也: https://github.com/SpringSource/spring-batch/pull/41
有在平均時間多的解決方法,各有其缺點, 看到計算器這樣的回答: https://stackoverflow.com/a/8121102/470107
謝謝拉斐爾;) –
我認爲第三個鏈接是正確的做法:你有一個「作業執行範圍」,如果你想讓每個線程與自己的數據隔離,它比「作業」範圍更好 –
- 1. 春季批次vs石英工作?
- 2. 什麼是春季批次?
- 3. 春季批次的批量作業
- 4. 春季批次和春季批次管理項目
- 5. 春季批次:如何找出作業是否重新啓動
- 6. 是否可以在春季製作@Aspect請求範圍
- 7. 春季批次:作業依賴關係
- 8. 關於春季批次
- 9. 春季豆執法範圍
- 10. 春季交易範圍
- 11. 春季會議範圍
- 12. 春季的應用範圍
- 13. 春季session範圍Mbean
- 14. 物業範圍在春季
- 15. 春季有應用範圍嗎?
- 16. 春範圍爲單工作
- 17. 春季批次:執行一項工作究竟如何到齊?
- 18. 我怎麼能確認重試工作在春季批次impelmentation
- 19. 如何範圍代理內部工作在春季
- 20. 春季批次:針對不同工作的不同工作發射器
- 21. 兩個春季批處理作業是否重疊?
- 22. RetryOperationsInterceptor發生了什麼? (春季批次)
- 23. 停止春季批次失敗
- 24. 春季批次SkipPolicy未使用
- 25. 與HazelCast的春季批次集成
- 26. 春季批次中的XA交易
- 27. 石英+春季批次彈簧開機
- 28. 春季批次3.0.2依賴與javax.batch.runtime.JobInstance
- 29. 春季批次,HSQLDB越來越多
- 30. 預防春季批次proxifying具體豆
你可以通過更多關於你想實現的細節來擴展你的問題嗎? –
我已經創建了一個dataHolder bean來在作業的不同步驟之間共享數據。我的工作,可以由多個線程異步執行,所以爲了線程安全性的要求,我確實想爲每個執行的Job創建一個dataHolder bean。 –