标签:
上下文:
执行:
执行上下文:
警告:一旦steps共享数据,这些数据就会把这些steps连接起来。努力使steps独立。如果你实在是不能独立他们,才使用下面的技术。你应该把数据共享作为steps不能独立的后备方案。
什么是execution context:ExecutionContext类就代表了执行上下文,它就是一个适合与批应用的 键值对的一个 map。下面就是一个从上下文读写数据的例子:
executionContext.putString("importId", importId);String importId = jobExecutionContext.getString("importId");
an execution context只是a job execution的一部分,并且不同的执行上下文
Spring Batch提供了两种execution context: job execution context和step execution context。它们都是ExecutionContext类型但是它们的作用域不同。下图说明了在一个job execution过程中的两种执行上下文。
那么怎么访问执行上下文呢?你需要引用对应的执行:JobExecution:如果你想访问job执行上下文,StepExecution:如果你想访问step执行上下文。几乎所有的Spring Batch artifacts能够很容易的访问JobExecution和StepExecution,不幸的是item reader,processor,writer功能不能访问它们。不过你可以实现一个监听接口(如:ItemStream)来洞察execution.下面列举了ItemReader通过实现ItemStream接口来访问执行上下文
清单1:
public class FilesInDirectoryItemReader implementsItemReader , ItemStream {@Overridepublic void open(ExecutionContext executionContext)throws ItemStreamException { }
@Overridepublic void update(ExecutionContext executionContext)throws ItemStreamException { }
@Overridepublic void close() throws ItemStreamException { }@Overridepublic File read() throws Exception, UnexpectedInputException,ParseException, NonTransientResourceException { (...) }}
用job execution context在steps之间共享数据
标签:
原文地址:http://my.oschina.net/xhujinjun/blog/395471