2011-08-19 52 views
1

我需要传递有关处理项目处理器之间的项目的数据,我不需要持久化数据,什么是最好的方法(注意我目前使用StepSynchronizationManager访问stepExecution并将数据存储在ExecutionContext中)。春季批次ItemProcessors之间传递数据的最佳方法?

+0

u能粘贴代码,我想知道你是如何使用StepSynchronizationManager之间的项目我需要为我的项目。 –

回答

2

是什么让你觉得,你的方式 - 在StepExecutionContext中存储数据 - 是一个糟糕的或不是最好的方式?

你可以尝试没有在StepExecution保存数据,而是改变处理器

public class FirstProcessor implements ItemProcessor<String, String> {...} 


public class SecondProcessor implements ItemProcessor<String, OtherClass> { 

    public OtherClass process(String item) throws Exception { 

    return otherClassObjectWithDataForNextProcessor; 

    } 
} 

public class ThirdProcessor implements ItemProcessor<OtherClass, TargetClass> {...} 

public class CustomItemWriter implements ItemWriter<TargetClass> {...} 

看到Spring Batch Doc - Chaining Item Processors

+1

感谢您的回答,StepExecutionContext只保存可序列化的对象,并且除此之外它还保留其中的数据,在我的情况下,这两种行为都不可取。我想最好的方法是用另一个类来包装我的Items,该类还定义了一个包含非持久化处理上下文的映射。 –

相关问题