我创建了一个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;
}
}
请告知。
由于
答案 0 :(得分:1)
注册HeaderLineHandler
作为步骤监听器
这必须这样做,因为 - 正如在doc中某处写的那样 - 只有一流的项目(步骤,读者,编写者和处理器肯定,其他我现在不记得了)会被框架自动注册为监听器。