Spring批处理-提交间隔的延迟绑定无法使用跳过策略

Spring批处理-提交间隔的延迟绑定无法使用跳过策略,spring,batch-processing,spring-batch,Spring,Batch Processing,Spring Batch,我正在尝试对块的提交间隔属性使用延迟绑定 当区块不包含跳过策略或重试策略时,它可以正常工作,但一旦添加跳过策略(甚至重试策略),提交间隔将不被考虑,批处理的工作方式就好像提交间隔设置为1一样。奇怪的是,当提交间隔被硬编码时,它工作得很好 因此,此配置工作正常: <chunk reader="multiAccuseReceptionItemReader" processor="enrichissementPrescriptionItemProcesso

我正在尝试对块的提交间隔属性使用延迟绑定

当区块不包含跳过策略或重试策略时,它可以正常工作,但一旦添加跳过策略(甚至重试策略),提交间隔将不被考虑,批处理的工作方式就好像提交间隔设置为1一样。奇怪的是,当提交间隔被硬编码时,它工作得很好

因此,此配置工作正常:

<chunk reader="multiAccuseReceptionItemReader" 
                   processor="enrichissementPrescriptionItemProcessor"
                   writer="prescriptionItemWriter" 
                   commit-interval="#{jobExecutionContext['commits']}">

这个也很好用:

<chunk reader="multiAccuseReceptionItemReader" 
                   processor="enrichissementPrescriptionItemProcessor"
                   writer="prescriptionItemWriter"
                   skip-policy="skipPolicy"
                   commit-interval="3">

但这一个不考虑提交间隔,并将其设置为1:

<chunk reader="multiAccuseReceptionItemReader" 
                   processor="enrichissementPrescriptionItemProcessor"
                   writer="prescriptionItemWriter"
                   skip-policy="skipPolicy"
                   commit-interval="#{jobExecutionContext['commits']}">

我尝试将完成策略与simpleCompletionPolicy结合使用,而不是使用提交间隔,但更糟糕的是:当存在跳过策略或重试策略时,不会考虑chunkSize,即使它是硬编码的。如果没有任何跳过策略或重试策略,则会考虑chunkSize(硬编码或后期绑定)

我使用的是SpringBatch 2.2.0(无法更改)

为什么会有这种行为?
如何使用跳过策略和重试策略动态设置提交间隔?

这是类org.springframework.batch.core.configuration.xml.StepParserStepFactoryBean:中已知的spring batch错误

它已在版本2.2.2中更正

因此,最好的解决方案是升级到SpringBatch的v2.2.2(与2.2.0相同,但有一些错误更正)

如果-像我一样-你真的不能升级,那么最好的方法是从中复制类org.springframework.batch.core.configuration.xml.StepParserStepFactoryBean,将其添加到你的源代码中,并确保在类路径中的spring batch core jar之前加载你的源代码