Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Cloud Task 集成Spring Cloud Task Batch(一)

Spring Cloud Task 集成Spring Cloud Task Batch(一)

原创
作者头像
堕落飞鸟
发布于 2023-04-17 02:39:02
发布于 2023-04-17 02:39:02
1.1K00
代码可运行
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏
运行总次数:0
代码可运行

介绍

Spring Cloud Task和Spring Batch都是Spring生态系统中强大的工具。Spring Batch提供了一个框架,用于编写和执行大规模批处理作业,而Spring Cloud Task提供了一种机制,可以将短期的任务作为单独的执行单元来运行。这两个工具在不同的场景下都非常有用,因此将它们结合起来可以提供更广泛的应用程序开发和部署选择。

添加Spring Batch依赖项

在构建文件中,我们需要添加Spring Batch依赖项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<dependency>
    <groupId>org.springframework.batch</groupId>
    <artifactId>spring-batch-core</artifactId>
    <version>${spring-batch.version}</version>
</dependency>

创建Spring Batch作业

我们将创建一个简单的Spring Batch作业,该作业将读取一个文件,并将文件中的每一行打印到控制台上。首先,我们需要定义一个JobBuilderFactory,并在其中创建一个新的Job:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.mapping.PassThroughLineMapper;
import org.springframework.batch.item.file.transform.DefaultFieldSet;
import org.springframework.batch.item.file.transform.FieldSet;
import org.springframework.batch.item.file.transform.LineTokenizer;
import org.springframework.batch.item.file.transform.PassThroughLineTokenizer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {

    private final JobBuilderFactory jobBuilderFactory;

    private final StepBuilderFactory stepBuilderFactory;

    @Value("file:${input.file}")
    private Resource inputFile;

    public BatchConfiguration(JobBuilderFactory jobBuilderFactory,
                               StepBuilderFactory stepBuilderFactory) {
        this.jobBuilderFactory = jobBuilderFactory;
        this.stepBuilderFactory = stepBuilderFactory;
    }

    @Bean
    public FlatFileItemReader<FieldSet> reader() {
        FlatFileItemReader<FieldSet> reader = new FlatFileItemReader<>();
        reader.setResource(inputFile);
        LineTokenizer tokenizer = new PassThroughLineTokenizer();
        reader.setLineMapper(new PassThroughLineMapper() {
            @Override
            public FieldSet mapLine(String line, int lineNumber) throws Exception {
                return new DefaultFieldSet(line.split(","), tokenizer.tokenize(line));
            }
        });
        return reader;
    }

    @Bean
    public SimpleItemWriter writer() {
        return new SimpleItemWriter();
    }

    @Bean
    public Step step() {
        return stepBuilderFactory.get("step")
                .<FieldSet, String>chunk(10)
                .reader(reader())
                .writer(writer())
                .build();
    }

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

}

在这个类中,我们首先定义了一个JobBuilderFactory和StepBuilderFactory,这些工厂类将用于创建作业和步骤。我们还定义了一个Resource属性,该属性将在配置文件中定义,指定输入文件的位置。我们使用@Value注释将输入文件注入到该属性中。

接下来,我们定义了一个FlatFileItemReader,该Reader将用于读取输入文件。我们使用PassThroughLineMapper来指定如何将文件行映射到FieldSet对象中,然后使用DefaultFieldSet将FieldSet对象映射到我们定义的数据对象中。

然后,我们定义了一个SimpleItemWriter,这是一个简单的Writer,将数据输出到控制台上。

最后,我们定义了一个Step,它将使用我们定义的reader和writer来读取和写入数据。

我们还定义了一个Job,它将使用我们定义的Step来运行我们的作业。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringBoot:使用Spring Batch实现批处理任务
在企业级应用中,批处理任务是不可或缺的一部分。它们通常用于处理大量数据,如数据迁移、数据清洗、生成报告等。Spring Batch是Spring框架的一部分,专为批处理任务设计,提供了简化的配置和强大的功能。本文将介绍如何使用Spring Batch与SpringBoot结合,构建和管理批处理任务。
E绵绵
2024/07/03
1.1K0
Spring Batch实战(三)
今天这篇文章,我们来了解一下SpringBatch的ItemReaders、ItemWriters、ItemStream以及怎么注册一个Step。前一篇文章我分析了一下怎么去从database中load数据使用ItemReader的一个子类JdbcPageQueryProvider,今天就进一步分析一下读取数据库数据源时的两个关键类ItemReader和ItemStream,以及写入数据库时的ItemWriter。
xdd
2022/07/12
1.5K0
Spring Batch实战(三)
SpringBatch文档
Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。
全栈程序员站长
2022/09/01
5.5K0
Spring Batch实战(二)
在Spring Batch中,Job只是Step实例的容器。它将在逻辑上属于一个流的多个步骤组合在一起,并允许配置所有步骤的全局属性,比如可重新启动性。作业配置包含:
xdd
2022/07/12
1K0
Spring Batch实战(二)
Spring Batch 批处理(7) - 异常处理及容错机制
1.对于chunk类型的Step,spring batch为我们提供了用于管理它的状态
chenchenchen
2020/05/26
1.7K0
Spring Batch(3)——Step控制
批处理任务的主要业务逻辑都是在Step中去完成的。可以将Job理解为运行Step的框架,而Step理解为业务功能。
随风溜达的向日葵
2019/07/08
6.5K1
Spring Batch(3)——Step控制
【Spring底层原理高级进阶】Spring Batch清洗和转换数据,一键处理繁杂数据!Spring Batch是如何实现IO流优化的?本文详解!
批处理是企业级业务系统不可或缺的一部分,spring batch是一个轻量级的综合性批处理框架,可用于开发企业信息系统中那些至关重要的数据批量处理业务.SpringBatch基于POJO和Spring框架,相当容易上手使用,让开发者很容易地访问和利用企业级服务.spring batch具有高可扩展性的框架,简单的批处理,复杂的大数据批处理作业都可以通过SpringBatch框架来实现。
苏泽
2024/03/10
9080
【Spring底层原理高级进阶】Spring Batch清洗和转换数据,一键处理繁杂数据!Spring Batch是如何实现IO流优化的?本文详解!
深入解析Spring Batch:企业级批处理框架的技术之旅
Spring Batch是一个开源的、轻量级的批处理框架,它基于Spring框架构建,继承了Spring的诸多优点,如依赖注入、面向切面编程等。Spring Batch旨在简化批处理应用程序的开发,提供了一套丰富的功能来支持事务管理、作业调度、异常处理、日志记录等。
公众号:码到三十五
2024/03/19
9410
深入解析Spring Batch:企业级批处理框架的技术之旅
【译】Spring 官方教程:创建批处理服务
原文:Creating a Batch Service 译者:Mr.lzc 校对:lexburner 本指南将引导你完成创建基本的批处理驱动解决方案的过程。 你将构建什么 你将构建一个从CSV电子表格导入数据的服务,并使用自定义代码进行转换,并将最终结果存储在数据库中。 你需要准备什么 大约15分钟 一个自己喜欢的文本编辑器或者IDE JDK 1.8 或以上版本 Gradle 2.3+ 或者 Maven 3.0+ 你也可以直接将代码导入到本地的IDE中: Spring Tool Suite (STS) In
程序猿DD
2018/03/26
2.8K0
Spring Batch 之 Hello World教程
本文我们基于spring boot和spring batch 实现一个简单hello world入门批处理程序。如果你刚刚接触spring batch,这篇教程会让你花最短时间理解spring batch框架。
全栈程序员站长
2022/09/02
9170
Spring Batch 批处理(4) - ItemReader
2.在这个接口中只有一个方法read(),它读取一个数据并且移动到下一个数据上去,在读取结束时必须返回一个null,否则表明数据没有读取完毕;
chenchenchen
2020/05/26
1.1K0
Spring Batch 批处理(5) - ItemWriter
对于read读取数据时是一个item为单位的循环读取,而对于writer写入数据则是以chunk为单位,一块一块的进行写入
chenchenchen
2020/05/26
1.1K0
批处理框架 Spring Batch 这么强,你真的会用吗?
概念词就不多说了,我简单地介绍下 , spring batch 是一个 方便使用的 较健全的 批处理 框架。
用户1220090
2025/05/08
3130
批处理框架 Spring Batch 这么强,你真的会用吗?
Spring Batch 轻量级批处理框架实践
6、创建任务完成的监听 JobCompletionNotificationListener
二哥聊运营工具
2021/12/17
3570
Spring Batch 轻量级批处理框架实践
【Spring云原生】Spring Batch:海量数据高并发任务处理!数据处理纵享新丝滑!事务管理机制+并行处理+实例应用讲解
Spring Batch是一个基于Java的开源批处理框架,用于处理大规模、重复性和高可靠性的任务。它提供了一种简单而强大的方式来处理批处理作业,如数据导入/导出、报表生成、批量处理等。
苏泽
2024/03/10
2K0
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
在大厂架构中,提升系统性能和稳定性是技术团队的首要任务。SQL优化与批处理作为两大关键技术手段,对于处理大规模数据和高并发请求具有重要意义。本文将从Java技术专家的视角出发,深入探讨SQL优化与批处理在大数据处理中的应用及原理,并通过Java示例详细讲解具体的底层实现。
小马哥学JAVA
2024/12/25
1450
Spring Boot批处理
批处理服务是在单个任务中执行多个命令的过程。在本章中,将学习如何在Spring Boot应用程序中创建批处理服务。
黑洞代码
2021/11/09
9480
Spring Cloud Task 高级特性Task Batch Jobs
Spring Cloud Task是一个轻量级的框架,用于在Spring Boot应用程序中运行短期任务。它提供了一种简单的方式来管理和监控这些任务,同时还可以与Spring Batch集成,以支持批量处理任务。在本文中,我们将重点介绍Spring Cloud Task的高级特性之一:Task Batch Jobs。
堕落飞鸟
2023/04/17
6810
Spring Batch之批处理实践
Spring Batch 是Spring的子项目,基于Spring的批处理的框架,通过其可以构建出批量的批处理框架。
mySoul
2020/06/17
9770
Spring Batch入门篇
Spring Batch,一个很多人还觉得陌生的框架,它是Spring Cloud Task的基础,主要用来实现批量任务的处理。该框架在国内的使用非常少,所以一直以来对于该框架在中文资料也一直都非常欠缺。 因此,在这里向大家推荐一位愿意将与我们分享Spring Batch技术细节的开源爱好者,也是我们spring4all.com社区的Spring Batch专题版主:杨小强童鞋! 下面我们就跟着他的系列文章一步步的了解Spring Batch的技术细节。 简介 SpringBatch 是一个大数据量的并行处
程序猿DD
2018/02/01
1.2K0
Spring Batch入门篇
推荐阅读
相关推荐
SpringBoot:使用Spring Batch实现批处理任务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档