真心强大!Spring Batch 批处理框架

  • 一、SpringBatch 介绍

  • 二、业务场景

  • 三、基础知识

  • 四、基础实操


一、SpringBatch 介绍 

Spring Batch 是一个轻量级、全面的批处理框架,它的目标是支持开发健壮的批处理应用程序,这些应用程序对企业系统的日常操作至关重要。与其他框架相比,Spring Batch 是基于 Spring Framework 的特性、易用性和基于 POJO 的开发方法等优点而建立起来的。这使得开发人员能够轻松访问和使用更高级的企业服务,从而提高了应用程序的效率。

尽管 Spring Batch 不是一个调度框架,但是它可以与商业和开源领域的许多优秀的企业调度程序(例如 Quartz、Tivoli、Control-M 等)结合使用。与这些调度程序结合使用,Spring Batch 可以使得企业系统更加高效地运转,从而提高生产力和效益。

 

二、业务场景

我们在业务开发中经常遇到这种情况:

Spring Batch 支持以下业务场景:

  • 定期提交批处理。

  • 并发批处理:并行处理作业。

  • 分阶段的企业消息驱动处理。

  • 大规模并行批处理。

  • 失败后手动或计划重启。

  • 相关步骤的顺序处理(扩展到工作流驱动的批次)。

  • 部分处理:跳过记录(例如,在回滚时)。

  • 整批交易,适用于批量较小或已有存储过程或脚本的情况。

 

三、基础知识

3.1、整体架构

官方文档:https://docs.spring.io/spring-batch/docs/current/reference/html/index-single.html#domainLanguageOfBatch

 

 

3.2、核心接口

  • ItemReader: is an abstraction that represents the output of a Step, one batch or chunk of items at a time

  • ItemProcessor:an abstraction that represents the business processing of an item.

  • ItemWriter: is an abstraction that represents the output of a Step, one batch or chunk of items at a time. 


  • 大体即为 输入数据加工输出 ,一个Job定义多个Step及处理流程,一个Step通常涵盖ItemReaderItemProcessorItemWriter

    四、基础实操

    4.0、引入 SpringBatch

    pom 文件引入 springboot

    pom 文件引入 spring-batch 及相关依赖 

    mysql 创建依赖的库表 

    sql 脚本的 jar 包路径:.....\maven\repository\org\springframework\batch\spring-batch-core\4.2.1.RELEASE\spring-batch-core-4.2.1.RELEASE.jar!\org\springframework\batch\core\schema-mysql.sql

    启动类标志@EnableBatchProcessing

    FirstJobDemo 

    4.1、流程控制

    A、多步骤任务

     

B、并行执行

创建了两个 Flow:flow1(包含 step1 和 step2)和 flow2(包含 step3)。然后通过JobBuilderFactorysplit方法,指定一个异步执行器,将 flow1 和 flow2 异步执行(也就是并行)

C、任务决策

决策器的作用就是可以指定程序在不同的情况下运行不同的任务流程,比如今天是周末,则让任务执行 step1 和 step2,如果是工作日,则之心 step1 和 step3。

D、任务嵌套

任务 Job 除了可以由 Step 或者 Flow 构成外,我们还可以将多个任务 Job 转换为特殊的 Step,然后再赋给另一个任务 Job,这就是任务的嵌套。

 

4.2、读取数据

定义 Model TestData,下面同一

 

 

读取数据包含:文本数据读取、数据库数据读取、XML 数据读取、JSON 数据读取等,具体自己查资料。

文本数据读取 Demo

 

4.3、输出数据

输出数据也包含:文本数据读取、数据库数据读取、XML 数据读取、JSON 数据读取等

 


4.5、处理数据 

4.6、任务调度

可以配合 quartz 或者 xxljob 实现定时任务执行

 

 

 

 

 

 


 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永钊源码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值