我已经使用SpringBatch几个月了。
我曾经将与执行相关的变量(如页数,项目数,批处理的当前位置等)存储到Bean中。然后,使用ItemReader
,ItemProcessor
-setters和getter将那些bean装入ItemWriter
,setVar()
,getVar()
。同样,这些Bean通过手动同步在线程之间共享。
但是现在我发现这可能是做批处理工作的错误方法。装载到ItemReaders
的Bean不能在JobRepository
中持久存在,因此无法记录用于停止和重新启动Job的状态。因此,我仍然需要返回并使用StepExecution
/ JobExecution
。
我在网上找到的那些示例全部基于XML配置,或者更差的SpEL自动连接到setter方法。
我仅使用Java Config。是否有访问StepExecution
的Java配置或面向Java代码的方式?访问各种ExecutionContext
的最佳实践是什么?
最佳答案
要访问StepExecution
,JobExecution
,您可以根据需要使用带有包org.springframework.batch.core.annotation
中带有批注的方法或实现JobExecutionListener
,StepExecutionListener
之类的迭代器