我创建了一个Header Handler类,在其中将标头的值放入Execution上下文中。handleLine,beforeStep和afterStep方法已经实现。但是当我运行应用程序时,handleLine方法被调用,并且我获得标头的值但是由于某种原因,beforeStep和afterStep不会被调用。我不确定为什么。下面是代码片段:
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;
}
}
请指教。
谢谢
最佳答案
将HeaderLineHandler
注册为步骤侦听器。
之所以必须这样做,是因为-正如在doc中的某个地方所写-框架仅将一流的项目(可以肯定是步骤,读者,作家和处理器,其他我现在不记得的其他项目)自动注册为侦听器。