SpringBatch实践

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 理应用程序。Spring Batch 建立在人们期望的 Spring Framework 特性(生产力、基于 POJO 的开发方法和一般易用性)的基础上,同时使开发人员可以在必要时轻松访问和使用更高级的企业服务。Spring Batch 不是一个调度框架。在商业和开源领域都有许多优秀的企业调度程序(例如 Quartz、Tivoli、Control-M 等)。Spring Batch 旨在与调度程序结合使用,而不是替代调度程序。

一、SpringBatch介绍
Spring Batch 是一个轻量级、全面的批处理框架,旨在支持开发对企业系统的日常操作至关重要的健壮的批处理应用程序。Spring Batch 建立在人们期望的 Spring Framework 特性(生产力、基于 POJO 的开发方法和一般易用性)的基础上,同时使开发人员可以在必要时轻松访问和使用更高级的企业服务。Spring Batch 不是一个调度框架。在商业和开源领域都有许多优秀的企业调度程序(例如 Quartz、Tivoli、Control-M 等)。Spring Batch 旨在与调度程序结合使用,而不是替代调度程序。
二、业务场景
我们在业务开发中经常遇到这种情况:

Spring Batch 支持以下业务场景:

定期提交批处理。
并发批处理:并行处理作业。
分阶段的企业消息驱动处理。
大规模并行批处理。
失败后手动或计划重启。
相关步骤的顺序处理(扩展到工作流驱动的批次)。
部分处理:跳过记录(例如,在回滚时)。
整批交易,适用于批量较小或已有存储过程或脚本的情况。

三、基础知识
3.1、整体架构

官方文档:阅读地址

0.0.png

0.2.png

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通常涵盖ItemReader、ItemProcessor、ItemWriter
四、基础实操
4.0、引入SpringBatch
🔖 pom文件引入springboot

org.springframework.boot
spring-boot-starter-parent
2.2.5.RELEASE
<relativePath/>

复制代码
🔖 pom文件引入spring-batch及相关依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-batch</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>


复制代码
🔖 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
@SpringBootApplication
@EnableBatchProcessing
public class SpringBatchStartApplication
{

public static void main(String[] args) {  
    SpringApplication.run(SpringBatchStartApplication.class, args);  
}  

}
复制代码
🔖FirstJobDemo
@Component
public class FirstJobDemo {

@Autowired  
private JobBuilderFactory jobBuilderFactory;  
@Autowired  
private StepBuilderFactory stepBuilderFactory;  

@Bean  
public Job firstJob() {  
    return jobBuilderFactory.get("firstJob")  
            .start(step())  
            .build();  
}  

private Step step() {  
    return stepBuilderFactory.get("step")  
            .tasklet((contribution, chunkContext) -> {  
                System.out.println("执行步骤....");  
                return RepeatStatus.FINISHED;  
            }).build();  
}  

}

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
技术探索中的思考与实践
【10月更文挑战第8天】 在现代技术的浩瀚海洋中,如何找到自己的方向并坚定地走下去?本文通过作者的亲身实践与感悟,探讨了技术学习的方法、面对挑战的心态以及创新的重要性。希望这些经验能够启发更多技术爱好者在他们的学习和职业道路上少走弯路,勇往直前。
45 7
|
4月前
|
Kubernetes Cloud Native 测试技术
探索软件测试的奥秘:从理论到实践深入理解云原生架构:从基础到实践
【8月更文挑战第28天】在软件开发的世界中,测试不仅是质量的守护者,也是创新的催化剂。本文将带你穿越软件测试的迷宫,从基础概念到高级策略,揭示如何通过测试提升软件质量和用户体验。我们将一起解码测试的核心原则,探索自动化测试的魅力,并学习如何设计有效的测试案例。无论你是测试新手还是资深开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,让你在软件测试的道路上更加从容不迫。 【8月更文挑战第28天】本文旨在为读者揭示云原生技术的核心概念、优势以及如何在实际项目中应用。通过深入浅出的方式,我们将探索云原生的多个方面,包括容器化、微服务架构、持续集成和持续部署(CI/CD)、以及如何利用Kubern
|
3月前
|
运维 监控 Devops
DevOps实践:从理论到落地的旅程
在软件开发和运维日益融合的今天,DevOps已不仅仅是一个流行词汇。它代表了一种文化和实践的转变,旨在打破部门间的壁垒,加速产品从构思到市场的流程。本文将带你了解DevOps的核心理念,并通过实际案例展示如何将这些理念应用到日常工作中,实现高效协作和持续改进。无论你是DevOps新手还是资深专家,这篇文章都将为你提供新的视角和实用的技巧。
|
7月前
|
Java
JAVA运算符应用与实践
JAVA运算符应用与实践
41 1
|
7月前
|
Python
物理光学应用与实践
物理光学应用与实践
79 0
|
缓存 运维 监控
《SRE实战》实践
SRE 全称是 Site Reliability Engineering,最早是由 Google 提出,并且在其工程实践中发扬光大。 他们还出了一本同名书籍「Site Reliability Engineering」, 让这个理念在互联网工程师圈子里广泛传播。
1236 0
个人实践
对于ESC的一些感想
119 2
|
弹性计算 开发者
学生“在家实践”计划
阿里又来送温暖了哦!因新冠肺炎疫情,学校延期开学。在家时间不浪费,提高技能好机会。阿里云弹性计算联合开发者社区,推出高校“在家实践”计划,全国高校学生,每人可免费领取一台云服务器ECS算力资源,在线实践课程等资源。通过测试后,云服务器免费使用最高时限一年哟! 这个2022有没有被阿里圈粉呢?
学生“在家实践”计划
|
设计模式 开发框架 Java
设计模式: 实际场景的落地应用(含开源项目和生产环境实践)--持续更新中
设计模式: 实际场景的落地应用(含开源项目和生产环境实践)--持续更新中
1239 2
设计模式: 实际场景的落地应用(含开源项目和生产环境实践)--持续更新中