2011-08-19 67 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,該類還定義了一個包含非持久化處理上下文的映射。 –