Spring batch系列文章(三)—— 决策器和监听器


系列文章第三篇,学习一下 spring batch 的两个重要的组件,决策器(Decider)和监听器(Listener) 。
第一篇文章的传送门: Spring batch系列文章(一)——介绍和入门

第二篇的文章传送门: Spring batch系列文章(二)——核心api

决策器

什么是决策器?

简而言之,决策器就是在step执行完成后,根据执行的结果动态进行决策,能够根据不同的结果执行不同的接下来的step,这样的一个组件就叫决策器。决策器可以自定义完成一些复杂的判断条件。

在源码中,决策器的接口是JobExecutionDecider,这里面只有一个方法:

public interface JobExecutionDecider {
   
   FlowExecutionStatus decide(JobExecution jobExecution, @Nullable StepExecution stepExecution);
}

其中,两个参数分别是jobExecution和stepExecution,代表执行决策时当前的任务和步骤的实例。返回值是FlowExecutionStatus类型。

决策器实现

接下来我们写一个简单的决策器示例:

首先定义一个决策器:

public class MyDecider implements JobExecutionDecider {
   
    private int count;
    @Override
    public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) {
   
    //每次执行count+1
        count++;
        if (count % 2 == 0) {
   
        //count为偶数时返回even
            return new FlowExecutionStatus("even");
        }
        //奇数时返回odd
        return new FlowExecutionStatus("odd");
    }
}

接下来完成DeciderDemo

@Configuration
@EnableBatchProcessing
public class DeciderDemo {
   
    @Autowired
    private JobBuilderFactory jobBuilderFactory;
    @Autowired
    private StepBuilderFactory stepBuilderFactory;
    @Bean
    public Job DeciderDemoJob(){
   
        return jobBuilderFactory.get("DeciderDemoJob")
                .start(deciderDemoStep1())
                .next(myDecider())
                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值