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
相关文章
|
1月前
技术探索中的思考与实践
【10月更文挑战第8天】 在现代技术的浩瀚海洋中,如何找到自己的方向并坚定地走下去?本文通过作者的亲身实践与感悟,探讨了技术学习的方法、面对挑战的心态以及创新的重要性。希望这些经验能够启发更多技术爱好者在他们的学习和职业道路上少走弯路,勇往直前。
39 7
|
6月前
|
存储 传感器 数据处理
单片机编程入门与实践
单片机编程入门与实践
71 2
|
6月前
|
Python
物理光学应用与实践
物理光学应用与实践
67 0
|
6月前
实践出真知,来刷一下题吧
实践出真知,来刷一下题吧
33 1
个人实践
对于ESC的一些感想
117 2
|
弹性计算 开发者
学生“在家实践”计划
阿里又来送温暖了哦!因新冠肺炎疫情,学校延期开学。在家时间不浪费,提高技能好机会。阿里云弹性计算联合开发者社区,推出高校“在家实践”计划,全国高校学生,每人可免费领取一台云服务器ECS算力资源,在线实践课程等资源。通过测试后,云服务器免费使用最高时限一年哟! 这个2022有没有被阿里圈粉呢?
学生“在家实践”计划
|
弹性计算 JavaScript 关系型数据库
在家实践
我是一名计算机类大一学生,了解到阿里飞天加速计划是在哔哩哔哩站看到一些web开发项目。大多数服务器昂贵并且对我来说有些资源浪费,于是选择了这款适合学生的云服务器。
112 0
高校学生在家实践——完全小白的云架构学习之旅
一个对电脑和云架构完全小白的英文系学生通过阿里云学习云架构的经验分享