Java 如何在spring批处理中动态设置提交间隔
当我试图从jobExecutioncontext中为提交间隔分配一个值时,我得到以下错误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
<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;
}
}