在我的项目中,我使用 Spring Batch 2.2 编写了一个 Quartz 调度程序。
根据我的要求,我想运行一个调度程序来获取应用程序配置属性,以刷新所有 GlassFish 集群上的配置缓存。
所以我不需要用于文件读/写操作的 ItemWriter 和 ItemReader。 那么我可以从中删除 ItemReader 和 ItemWriter 吗?
我的工作配置如下:
<batch:job id="reportJob">
<batch:step id="step1">
<batch:tasklet>
<!--I want to remove ItemReader and ItemWriter as its not used -->
<batch:chunk reader="ItemReader" writer="ItemWriter"
commit-interval="10">
</batch:chunk>
</batch:tasklet>
</batch:step>
<batch:listeners>
<batch:listener ref="simpleListener"/>
</batch:listeners>
</batch:job>
<bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<!-- Cache Refresh code is written here : JobLauncherDetails.java file -->
<property name="jobClass" value="com.mkyong.quartz.JobLauncherDetails" />
<property name="group" value="quartz-batch" />
<property name="jobDataAsMap">
<map>
<entry key="jobName" value="reportJob" />
<entry key="jobLocator" value-ref="jobRegistry" />
<entry key="jobLauncher" value-ref="jobLauncher" />
<entry key="param1" value="mkyong1" />
<entry key="param2" value="mkyong2" />
</map>
</property>
</bean>
我编写业务逻辑来刷新 JobClass JobLauncherDetails.java 上的缓存。 那么是否可以删除 ItemReader 和 ItemWriter ?我们有任何可能的替代方法吗?
最佳答案
使用 Tasklet
<job id="reportJob">
<step id="step1">
<tasklet ref="MyTaskletBean" />
</step>
<!-- Other config... -->
</job>
class MyTasklet implements Tasklet {
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
}
}
您可以在 official doc 第 5.2 章中阅读有关 Tasklet 的更多信息
关于spring - 我们可以编写一个没有 ItemReader 和 ItemWriter 的 Spring Batch 作业吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22680648/