作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<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”步骤提供适当的步骤监听器 - 如果您想要第二步的监听器,则类似配置。
关于java - Spring 批处理 : How do I use placeholders in step listeners?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4126787/
我是一名优秀的程序员,十分优秀!