Spring batch Spring批处理中的完成策略

Spring batch Spring批处理中的完成策略,spring-batch,Spring Batch,由于一些复杂的逻辑,我有定制的spring读写器,在reader类中,我必须从DB中读取数据,然后writer将数据写入writer中的excel文件。 在实现这一点时,我需要将记录分块读取并将其传递给编写器,我正在使用“MyCompletionPloice”java类扩展SimpleCompletionPolicy,并在构造函数中传递super(1),但问题是,它只读取一行并将其写入excel工作表,并且进入了一个永无止境的过程(循环运行reder-->写入器-->读取器-->等)。 有人能告

由于一些复杂的逻辑,我有定制的spring读写器,在reader类中,我必须从DB中读取数据,然后writer将数据写入writer中的excel文件。 在实现这一点时,我需要将记录分块读取并将其传递给编写器,我正在使用“MyCompletionPloice”java类扩展SimpleCompletionPolicy,并在构造函数中传递super(1),但问题是,它只读取一行并将其写入excel工作表,并且进入了一个永无止境的过程(循环运行reder-->写入器-->读取器-->等)。 有人能告诉我同样的情况吗?请找到示例代码

作业配置-

batch:job id="DailyJob">        
    <batch:step id="DailyJobStep1" next="DailyJobStep2">
        <batch:tasklet>
            <batch:chunk reader="DailyJobCSVFileItemReader" writer="DailyJobCSVFileCustomWriter"
                chunk-completion-policy="MyCompletionPloicy" />
            <batch:listeners>
                <batch:listener ref="DailyJobListener" />
            </batch:listeners>
        </batch:tasklet>
    </batch:step>
批处理:作业id=“DailyJob”>

读者班-

public class DailyJobCSVFileItemReader implements
               ItemReader<CSVFileDailyJobBean> {
@Override
public CSVFileDailyJobBean read() throws Exception,
        UnexpectedInputException, ParseException,
        NonTransientResourceException { 
    CSVFileDailyJobBean csvFileDailyJobBean = new CSVFileDailyJobBean()
    // some logic
    return csvFileDailyJobBean;
}}
公共类DailyJobCSVFileItemReader实现
项目阅读器{
@凌驾
public CSVFileDailyJobBean read()引发异常,
UnexpectedInputException,ParseException,
非TransientResourceException{
CSVFileDailyJobBean CSVFileDailyJobBean=新的CSVFileDailyJobBean()
//一些逻辑
返回csvFileDailyJobBean;
}}

您的读卡器实现需要返回null,以通知spring批处理它为空

read方法定义了ItemReader最基本的契约; 调用它将返回一个项,如果没有其他项,则返回null


请参见

您的读卡器实现需要返回null,以通知spring批处理它为空

read方法定义了ItemReader最基本的契约; 调用它将返回一个项,如果没有其他项,则返回null


当我使用SimpleCompletionPolicy并传递super(1)时,请参见每次从写入程序返回到读取程序时,它都会给出相同的行。它会得到相同的结果,但无法增加计数。但是,当我们使用spring提供的读取器并传递提交间隔时,它会增加值并获得下一组结果。因此,我希望使用完成策略实现相同的结果。请添加您的自定义代码问题的completionPolicy您在完成策略中是否有自定义代码的示例。我的意思是,在您的问题中包括您的“我正在使用”MyCompletionPloice“java类,该类扩展了SimpleCompletionPolicy”,因此,当我使用SimpleCompletionPolicy并传递super(1)时,我们可以查看代码每次从写入程序返回到读取程序时,它都会给出相同的行。它会得到相同的结果,但无法增加计数。但是,当我们使用spring提供的读取器并传递提交间隔时,它会增加值并获得下一组结果。因此,我希望使用完成策略实现相同的结果。请添加您的自定义代码问题的completionPolicy您在完成策略中是否有自定义代码的示例。我的意思是,您在问题中包括您的“我正在使用”MyCompletionPlocity“java类,它扩展了SimpleCompletionPolicy”,以便我们可以查看代码