Spring Batch Header Handler问题

时间:2015-08-06 15:54:12

标签: java spring spring-batch

我创建了一个Header Handler类,其中我将标头的值放入Execution上下文中。已经实现了handleLine,beforeStep和afterStep方法。但是当我运行应用程序时,handleLine方法被调用并且我得到了值标题。但由于某种原因,beforeStep和afterStep没有被调用。我不知道为什么.Below是代码片段:

public class HeaderLineHandler implements LineCallbackHandler,StepExecutionListener {

        StepExecution stepExecution;
        public void handleLine(final String headerLine) { 
            stepExecution.getExecutionContext().put("headerKey",headerLine);
        }

        @Override
        public ExitStatus afterStep(StepExecution stepExecution) {
            // TODO Auto-generated method stub

            JobExecution jobExecution = stepExecution.getJobExecution();
            ExecutionContext jobContext = jobExecution.getExecutionContext();
            System.out.println("Header value" + (String)jobContext.get("headerKey"));

            return  stepExecution.getExitStatus(); 
        }

        @Override
        public void beforeStep(StepExecution stepExecution) {
            // TODO Auto-generated method stub
            this.stepExecution = stepExecution;
        }
}

请告知。

由于

1 个答案:

答案 0 :(得分:1)

注册HeaderLineHandler作为步骤监听器 这必须这样做,因为 - 正如在doc中某处写的那样 - 只有一流的项目(步骤,读者,编写者和处理器肯定,其他我现在不记得了)会被框架自动注册为监听器。