[英]Spring Batch: How do I use placeholders in step listeners?
<beans>
<batch:job id="job1" restartable="false">
<batch:step id="step1" next="step2">
<batch:tasklet>
<batch:chunk reader="readerA" writer="writerA" commit-interval="1" />
</batch:tasklet>
</batch:step>
<batch:step id="step2">
<batch:tasklet ref="tasklet1"/>
</batch:step>
<batch:listeners>
<batch:listener ref="listenerA" />
</batch:listeners>
</batch:job>
<bean id="listenerA" class="com.example.ListenerA" scope="step">
<property name="archiveDate" value="#{jobParameters['jobRunDate']}" />
</bean>
</beans>
為什么上面的給我以下錯誤:
java.lang.IllegalStateException: No context available while replacing placeholders.
解決此問題的最佳方法是什么?
我認為問題在於您需要一個逐步偵聽器,而不是一個作業偵聽器。 步驟作用域超出了定義偵聽器的范圍,因此作用域步驟不可用-如果它是作業偵聽器,則不需要占位符,因為您可以從當前JobExecution獲取變量。
如果您改為這樣更改配置(假設這是一個步驟偵聽器,而不是作業偵聽器):
<batch:step id="step1" next="step2">
<batch:tasklet>
<batch:chunk reader="readerA" writer="writerA" commit-interval="1" />
<batch:listeners>
<batch:listener ref="listenerA" />
</batch:listeners>
</batch:tasklet>
</batch:step>
我相信這將為“ step1”步驟提供適當的步驟偵聽器-如果您希望第二步使用偵聽器,則可以進行類似的配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.