寫入次數(StepExecution.getWriteCount()),所以首先你需要將其提升到JobExecutionContext。
我建議使用與@AfterStep註釋的步驟偵聽此
@Component
public class PromoteWriteCountToJobContextListener implements StepListener {
@AfterStep
public ExitStatus afterStep(StepExecution stepExecution){
int writeCount = stepExecution.getWriteCount();
stepExecution.getJobExecution().getExecutionContext()
.put(stepExecution.getStepName()+".writeCount", writeCount);
return stepExecution.getExitStatus();
}
}
是執行插入每一步都將與此聽者中添加
<batch:step id="readFromDB1WrietToDB2" next="readFroDB2WrietToDB3">
<batch:tasklet transaction-manager="transactionManager">
<batch:chunk reader="reader" writer="writter" />
</batch:tasklet>
<batch:listeners>
<batch:listener ref="promoteWriteCountToJobContextListener"/>
</batch:listeners>
</batch:step>
<batch:step id="readFromDB2WrietToDB3" next="summerizeWrites">
<batch:tasklet transaction-manager="transactionManager">
<batch:chunk reader="reader" writer="writter" />
</batch:tasklet>
<batch:listeners>
<batch:listener ref="promoteWriteCountToJobContextListener"/>
</batch:listeners>
</batch:step>
您可以使用log4j的寫入結果在Step Listener中登錄,或者您可以在以後的步驟中使用保存的值。您需要使用規劃環境地政司表示讀它,使用規劃環境地政司表示你需要設置Writter /任務蕾在範圍=「臺階」
<batch:step id="summerizeWrites">
<batch:tasklet id="summerizeCopyWritesTaskelt"">
<bean class="Tasklet" scope="step">
<property name="writeCountsList">
<list>
<value>#{jobExecutionContext['readFromDB1WrietToDB2.writeCount']}</value>
<value>#{jobExecutionContext['readFromDB2WrietToDB3.writeCount']}</value>
</list>
</property>
</bean>
</batch:tasklet>
如果你想包括關於當前工作/步此信息? –
我有一個功能請求,說明用戶想要知道在同一個作業中有多少行插入到各個DB中。有幾種方法可以做到這一點,但我所看到的當前選項是使用spring batch job id,這將允許我將報告鏈接回spring batch admin。 – emeraldjava
我認爲這可能[回答] [1]你的問題。簡而言之,這是不可能的。 [1]:http://stackoverflow.com/questions/17149302/how-to-get-job-id-using-spring-expression-language –