spring - 我们可以编写一个没有 ItemReader 和 ItemWriter 的 Spring Batch 作业吗

标签 spring spring-batch

在我的项目中,我使用 Spring Batch 2.2 编写了一个 Quartz 调度程序。

根据我的要求,我想运行一个调度程序来获取应用程序配置属性,以刷新所有 GlassFish 集群上的配置缓存。

所以我不需要用于文件读/写操作的 ItemWriter 和 ItemReader。 那么我可以从中删除 ItemReaderItemWriter 吗?

我的工作配置如下:

 <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/

相关文章:

java - 如何使用 Spring Batch 将 header 和预告片写入现有文件而不覆盖该文件中的信息?

java - 优雅地关闭 spring 批处理并在失败的情况下恢复批处理

spring - 如何使用 MockMvc 测试 spring Controller 方法?

java - 应该如何从 Spring Data Neo4j 6 中删除的 @Depth 注释迁移?

java - SpringBoot, Controller 通过ResponseBodyAdvice返回数据出现错误(类无法转换为字符串)

java - Mockito 无法注入(inject)模拟

java - 使用 spring-batch 时 fork JVM

java - 尝试运行 Spring Batch Hello World 3 示例

java - Spring Boot启动时调用的Tasklet执行方法

json - 如何在 spring 3.1 中使用 RESTful webservice 获取 JSON 响应