【问题标题】:Best approach to pass data between ItemProcessors in spring batch?在春季批处理中在 ItemProcessors 之间传递数据的最佳方法?
【发布时间】:2011-08-19 12:58:30
【问题描述】:

我需要在项目处理器之间传递与处理项目相关的数据,我不需要持久化数据,最好的方法是什么(注意我目前正在使用 StepSynchronizationManager 来访问 stepExecution 并将数据存储在执行上下文)。

【问题讨论】:

  • 你能粘贴代码吗,我想知道你是如何使用我的项目所需的 StepSynchronizationManager.i 的。

标签: java spring spring-batch


【解决方案1】:

是什么让您认为,您的方式(将数据存储在 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

【讨论】:

  • 感谢您的回答,StepExecutionContext 仅保存可序列化的对象,并且除了保存其中的数据外,这两种行为在我的情况下都是不可取的。我想最好的方法是用另一个类包装我的 Items,该类也定义了一个映射来保存非持久处理上下文。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
  • 1970-01-01
  • 2022-08-02
  • 2014-12-15
  • 2018-05-27
  • 2015-05-13
  • 2017-06-25
相关资源
最近更新 更多