Java 如何在spring批处理中动态设置提交间隔

Java 如何在spring批处理中动态设置提交间隔,java,spring,spring-batch,Java,Spring,Spring Batch,当我试图从jobExecutioncontext中为提交间隔分配一个值时,我得到以下错误 <chunk reader="itemREader" writer="itemwriter" commit-interval="#{jobExecutionContext[rowcount]}"> Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Property o

当我试图从jobExecutioncontext中为提交间隔分配一个值时,我得到以下错误

<chunk reader="itemREader" writer="itemwriter" commit-interval="#{jobExecutionContext[rowcount]}">

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Property or field 'jobExecutionContext' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'

有人能告诉我如何动态设置提交间隔值吗?谢谢。

你的课当然永远不会上课了。。。该值将在调用构造函数后设置。另外,您不需要自己的实现,只需创建
SimpleCompletionPolicy
的实例,并使用表达式设置
chunkSize
属性即可。你正在走向复杂。还有,为什么要动态设置它?此spring批处理作业将从表中读取并创建一个文件,该文件应包含所有记录,如果发生任何异常,则该文件应为空,因此,我需要根据从表中检索到的行数动态设置提交间隔。我尝试创建简单完成策略的实例并尝试设置chunksize,但无法将字符串转换为int错误,因为jobExecutionContext中的值将是一串所以基本上你使用的是批处理,但没有使用任何好处。。。创建一个基于结果的
JobListener
StepListener
来保留文件或核化文件,而不是干预提交计数,这不是更容易吗?创建SimpleCompletionPolicy的实例并使用表达式来设置chunkSize属性工作正常。谢谢
 <bean id="myCompletionPolicy"
          class="com.vn.src.service.myCompletionPolicy" scope="step">
        <property name="recordCount" value="#{jobExecutionContext[RowCount]}"/>
    </bean>
public class myCompletionPolicy extends SimpleCompletionPolicy {

    private String recordCount;

    public MapCpeBatchFileJobCompletionPolicy() {

        setChunkSize(Integer.valueOf(recordCount));

    }

    public void setRecordCount(String recordCount) {
        this.recordCount = recordCount;
    }
}