Beforestep注释不会引用参数

时间:2014-11-10 08:15:45

标签: java spring spring-batch spring-boot

我对Spring Batch中ItemReader中@Beforestep的使用有点困惑。

当我使用

public class MyItemReader implements ItemReader<String> {

    long teller = 0L;

    @BeforeStep
    public void beforeStep(StepExecution se) {
    }

    @Override
    public String read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {

        if(teller == 11)
        return null;

        return String.valueOf(++teller);
    }
}

我得到一个例外:

Caused by: java.lang.IllegalArgumentException: The method [beforeStep] on target class [MyItemReader] is incompatible with the signature [(StepExecution)] expected for the annotation [BeforeStep].

这种情况不会导致异常:

    @BeforeStep
    public void beforeStep() {
    }

但是,文档中描述了第一种情况。

预期结果如何?当我无法将SendExecution对象添加到参数列表中时,如何将SendExecution对象发送到该对象?

我正在使用spring-boot-starter-batch-1.1.6.RELEASE

1 个答案:

答案 0 :(得分:0)

解决了它。有2个StepExecution类:org.springframework.batch.core.StepExecutionjavax.batch.runtime.StepExecution使用第一个,而不是第二个(就像我一样)。