从开始到放弃001-地狱世界的跳跃
经常有人问我有没有Spring Batch的例子可以参考。我之前的回答是百度一般自己找,太多了。但是后来我发现因为Spring Batch的版本太稳定,网上的例子大多是基于2.x和3.x版本的,对应的Spring Boot版本也比较老。针对这种情况,我决定根据最新发布的官方文件,写一套最新的例子,供朋友参考。
弹簧靴集成了弹簧批。如果想在程序时钟中启用Spring Batch,只需要添加@EnableBatchProcessing注释即可。Spring Boot会根据内置的@ BatchAutoConfiguration引入必要的配置。
春靴公文中的春批描述
让我们基于Spring Boot构建一个Hello World Spring批处理。让我想象一个简单的需求:读取某个目录中的一个文件,对其进行处理,然后编写另一个文件。
步骤1:创建一个新的Spring Boot项目
我们通过IDEA创建了一个新的Spring Boot项目,并在新的构建过程中引入了两个必要的依赖项:
回弹:运行回弹
MySQL驱动程序:需要通过Spring Batch和数据库存储Job的运行数据
创建一个新的春季开机项目

打开POM,我们会找到实际引入批处理的启动器。批核封装在启动器中。
org.springframework.boot
弹簧靴启动器批次
关系型数据库
MySQL-连接器-java
运行时间
由于引入了MySQL依赖,配置一个数据源,打开application.properties文件,添加数据源配置,spring.datasource.username=XXX
spring.datasource.password=XXX
spring . data source . driver-class-name = com . MySQL . CJ . JDBC . driver
spring . data source . URL = JDBC:MySQL://localhost:3306/batch _ config?零日期时间行为=转换全
我们需要在程序运行时初始化数据库,然后在程序启动时向application . properties # Initialize a空数据结构添加以下两个参数
spring . batch . initialize-schema = embed
#程序启动时不要运行任何作业
spring.batch.job.enabled=false
步骤2:定义读取器/处理器/写入器
根据我们想象的需求,我们需要设置一个阅读器来读取我们的文件。Spring Batch内置了很多有用的阅读器,后面章节我会详细介绍。这里我们选择FlatFileItemReader来读取文件。Spring Batch提供了FlatFileItemReaderBuilder来帮助我们构建FlatFileItemReader。我们只需要指定几个简单的属性就可以完成一个读取文件的阅读器。代码如下:@StepScope
@豆
公共项目阅读器项目阅读器{
//FlatFileItemReader
返回新的FlatFileItemReaderBuilder
。名字
。资源)
。线路映射器)
。构建;
}
读取文件后,我们在每一行添加一个字符串来模拟批处理的处理。我们通过实现匿名来完成添加字符串的操作:@StepScope
@豆
公共项目处理器项目处理器{
返回新的项目处理器{
@覆盖
公共字符串进程引发异常{
return " "+item;
}
};
}
在处理完读取的内容后,我们需要将读取的字符串写入数据库或文件系统,我们假设的需求是写文件。同一个Spring Batch官方提供了很多内置Writer。因为我们正在写文件,所以我们选择FlatFileItemWriter作为我们的编写器。同样,我们使用FlatFileItemWriterBuilder来构建我们的FlatFileItemWriter。@StepScope
@豆
公共项目编写器项目编写器{
返回新的FlatFileItemWriterBuilder
。名字
。线性聚合器)
。资源)
。构建;
}
至此,我们的读写器/处理器/写入器已经建成,相当于正在准备的零件。接下来,我们通过构建步骤/作业来组装批处理。
步骤3:构建步骤/作业
将@EnableBatchProcessing添加到项目后,默认情况下,批处理所需的对象将被注入到上下文中,包括用于构建步骤的Stepbuilderfactory和用于构建作业的Jobbuilderfactory。接下来,我们将使用这两个工厂来构建我们的步骤和作业。
先注入这两个工厂:@ autowired
jobbuilder factory jobbuilder factory;
@自动连线
stepbuilder factory stepbuilder factory;
将步骤2中的部件组装成一个步骤:@Bean
公共步骤步骤1{
返回stepBuilderFactory.get
。厚块
。读者)
。处理器)
。作家)
。构建;
}
将步骤放入作业:@Bean
公共职务1{
返回jobBuilderFactory.get.start)。构建;
}
经过以上两步,我们的工作就确定了。让我们测试一下我们写的作业是否正确:
第四步:测试工作
Springback4.x提供了一个@ SpringBatchTest,它将帮助我们构建一个批处理执行环境,比如两个类:joblaunchertestutils/jobrespitorytestutils。@RunWith
@回弹测试
@回弹测试
公共类JobTest {
@自动连线
私有JobLauncherTestUtils JobLauncherTestUtils;
@自动连线
私有JobRepresetorytestutils JobRepresetorytestutils;
… … … …
}
在测试我们的Job之前,我们需要清除空我们的测试库,这样上次失败引入的脏数据就不会影响我们这次的测试。@之前
public void clearMetadata {
jobresetorytestutils . removejobexecutions;
}
写一个简单的测试用例,运行我们的JOB,判断顺序是否正常结束:@Test
公共无效测试作业引发异常{
//给定
作业参数作业参数=
joblaunchertestutils . getuniquejobparameters;
//什么时候
作业执行作业执行=
joblaunchertestutils . launchejob;
//然后
assert . assertequals);
}
好了,从第一次开始,我们Hello World的代码都写好了。项目总体结构如下:
项目结构

运行我们的Junit Case,操作成功后,我们会在Writer指定的文件目录下生成处理过的文件。
运行效果

同时,在我们配置的数据库中,批处理框架所需的表将被初始化:
由数据库创建的表

彭舸上传了源代码:https://dev。腾讯. com/u/令狐冲/p/spring-boot-batch/git/tree/master/chapter 1
1.《springbatch SpringBatch从入门到放弃001》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《springbatch SpringBatch从入门到放弃001》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/1534260.html