Use case:
如果C远大于可以通过ExecutionContext传递的内容,那么我们怎样才能在enrichStep的ItemProcessor中使它?
答案 0 :(得分:1)
在enrichStep
添加StepExecutionListener.beforeStep
并将您的大集合加载到HugeCollectionBeanHolder
bean中。
通过这种方式,您只需加载一次收集(当步骤启动或重新启动时),而不会将其持久保存到执行上下文中。
在您的富集处理器中连接HugeCollectionBeanHolder
以访问大量集合。
class HugeCollectionBeanHolder {
Collection<Item> hudeCollection;
void setHugeCollection(Collection<Item> c) { this.hugeCollection = c;}
Collection<Item> getHugeCollection() { return this.hugeCollection;}
}
class MyProcessor implements ItemProcessor<Input,Output> {
HugeCollectionBeanHolder hcbh;
void setHugeCollectionBeanHolder(HugeCollectionBeanHolder bean) { this.hcbh = bean;}
// other methods...
}