首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring boot batch :如何使用作业参数运行作业

Spring Boot Batch: 如何使用作业参数运行作业

基础概念

Spring Boot Batch 是 Spring Boot 框架中的一个模块,用于简化批处理应用的开发。它提供了一套完整的批处理框架,包括作业调度、任务执行、错误处理等功能。作业参数(Job Parameters)是传递给批处理作业的配置信息,可以在运行时动态指定。

相关优势

  1. 简化配置:通过作业参数,可以灵活地配置作业的运行方式,而不需要修改代码。
  2. 动态执行:可以根据不同的参数执行不同的作业逻辑,提高作业的灵活性和复用性。
  3. 易于管理:作业参数可以通过命令行、配置文件等方式传递,便于管理和维护。

类型

作业参数可以分为以下几种类型:

  • 基本类型:如 String, Integer, Boolean 等。
  • 日期时间类型:如 LocalDate, LocalDateTime 等。
  • 自定义类型:可以通过实现 JobParameter 接口来定义自定义类型的参数。

应用场景

作业参数广泛应用于以下场景:

  • 定时任务:根据不同的时间参数执行不同的任务。
  • 数据导入导出:根据不同的数据源参数执行数据导入导出任务。
  • 多环境部署:根据不同的环境参数(如开发、测试、生产)执行不同的作业逻辑。

如何使用作业参数运行作业

以下是一个简单的示例,展示如何在 Spring Boot Batch 中使用作业参数运行作业。

1. 定义作业参数

首先,在 application.propertiesapplication.yml 文件中定义作业参数:

代码语言:txt
复制
# application.properties
job.name=myJob
job.input.file=path/to/input/file.csv

或者在 application.yml 中:

代码语言:txt
复制
# application.yml
job:
  name: myJob
  input:
    file: path/to/input/file.csv
2. 创建作业配置类

创建一个配置类来读取这些参数并配置作业:

代码语言:txt
复制
import org.springframework.batch.core.Job;
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.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableBatchProcessing
public class BatchConfig {

    @Value("${job.name}")
    private String jobName;

    @Value("${job.input.file}")
    private String inputFilePath;

    @Bean
    public Job job(JobBuilderFactory jobBuilderFactory, Step step) {
        return jobBuilderFactory.get(jobName)
                .start(step)
                .build();
    }

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

    @Bean
    public ItemReader<String> reader(String filePath) {
        // 实现自定义的 ItemReader
        return new CustomItemReader(filePath);
    }

    @Bean
    public ItemWriter<String> writer() {
        // 实现自定义的 ItemWriter
        return new CustomItemWriter();
    }
}
3. 运行作业

可以通过命令行传递参数来运行作业:

代码语言:txt
复制
java -jar mybatchapp.jar --job.name=myJob --job.input.file=path/to/input/file.csv

或者在代码中通过 JobLauncher 运行作业并传递参数:

代码语言:txt
复制
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParameters;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class JobRunner {

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job job;

    public void runJob() throws Exception {
        JobParameters jobParameters = new JobParametersBuilder()
                .addLong("time", System.currentTimeMillis())
                .toJobParameters();
        jobLauncher.run(job, jobParameters);
    }
}

遇到的问题及解决方法

如果在运行作业时遇到参数未正确传递的问题,可以检查以下几点:

  1. 参数命名:确保在 application.propertiesapplication.yml 中定义的参数名称与代码中读取的参数名称一致。
  2. 参数类型:确保传递的参数类型与代码中定义的参数类型一致。
  3. 配置文件路径:确保配置文件路径正确,并且 Spring Boot 能够正确加载配置文件。

通过以上步骤,你可以灵活地使用作业参数来运行 Spring Boot Batch 作业,并根据不同的需求进行配置和调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

spring boot 2.0 quartz 轻松实现定时任务和作业调度

springboot 自带的Schedule进行这一系列的工作,由于不能自动的添加定时任务,所以使用quartz,spring boot 2.0集成了quartz,所以决定尝试下quartz用于实现作业调度...做的时候查看了很多资料,都写的花里胡哨的,要么就是做的东西太完整了,要么就是完全不能理解,要么就是很早以前的做法了,让人很头晕,所以说做个很简单明了的教程,说一下如何使用 https://docs.spring.io.../spring-boot/docs/2.0.3.RELEASE/reference/htmlsingle/#boot-features-quartz build.gradle: uildscript...:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-starter-quartz')...testCompile('org.springframework.boot:spring-boot-starter-test') } build.gradle中引入spring-boot-starter-quartz

1.4K40
  • 你用过 Spring Batch 吗?

    我将向您展示如何使用Spring Boot创建一个的Spring Batch的Hello World示例。 (循序渐进) 因此,如果您是Spring Batch的初学者,您一定会喜欢本指南。...Spring Boot 配置 我们使用Spring Boot,目的是让一个Spring Batch应用程序可以“直接运行”。 首先创建一个SpringBatchApplication类。...有关Spring Boot的更多信息,请查看Spring Boot入门指南。 默认情况下,Spring Batch使用数据库存储已配置的批处理作业上的元数据。...在本例中,我们不直接使用数据库,而是使用基于内存映射的Map,运行Spring Batch。...如果您想运行上面的代码示例,您可以在这里获得完整的源代码。 在本入门教程中,您学习了如何使用Spring Boot和Maven创建一个简单的Spring Batch示例。

    2.2K10

    使用Spring Boot进行参数校验

    接下来,用Validation来改写这段 在Spring Boot的官网中,关于Validation只是简单的提了一句,如下 ?...5.1、引入spring-boot-starter-validation ? 5.2、定义一个对象 ? 5.3、适用@Valid校验,并将校验结果放到BindingResult对象中 ?...仅仅只是单字段校验的话未免也太不灵活了吧,如果字段之间有关联关系,那该如何校验呢?...这里,以优惠券创建为例来演示如何自定义校验规则 首先,优惠券表单如下(仅仅只是演示用): ? 这里除了自定义了两条校验规则之外,还用到了分组。 为什么要有分组这一说呢?...6.2、单个参数校验 ? ? ? 如果是调整页面的时候参数校验失败的话,这时可以不做处理,让其调到错误页面。 如果是接口参数校验失败的话,可以在这里进行统一处理,并返回。例如: ?

    1.2K10

    那你知道Spring Batch吗?

    为了演示Spring Batch如何工作的,让我们构建一个简单的Hello World批处理作业。 在本例中,我们从person.csv文件中读取一个人的姓和名。从这些数据生成一个问候语。...Spring Boot 配置 我们使用Spring Boot,目的是让一个Spring Batch应用程序可以“直接运行”。 首先创建一个SpringBatchApplication类。...有关Spring Boot的更多信息,请查看Spring Boot入门指南。 默认情况下,Spring Batch使用数据库存储已配置的批处理作业上的元数据。...在本例中,我们不直接使用数据库,而是使用基于内存映射的Map,运行Spring Batch。...它将运行批处理作业并检查是否成功完成。 我们使用@RunWith和@SpringBootTest测试注解告诉JUnit使用Spring的测试支持运行,并使用SpringBoot的支持引导。

    1.9K00

    使用Spring Boot进行参数校验

    接下来,用Validation来改写这段 在Spring Boot的官网中,关于Validation只是简单的提了一句,如下 其实,Spring Validator 和Hibernate Validator...5.1、引入spring-boot-starter-validation 5.2、定义一个对象 5.3、适用@Valid校验,并将校验结果放到BindingResult对象中 默认情况下,如果校验失败会抛...如果在校验的对象后面再加上Model对象的话,如果返回的是ModelAndView就可以将这个Model设置到其中,这样在页面就可以取到错误消息了 仅仅只是单字段校验的话未免也太不灵活了吧,如果字段之间有关联关系,那该如何校验呢...如果是调整页面的时候参数校验失败的话,这时可以不做处理,让其调到错误页面。...如果是接口参数校验失败的话,可以在这里进行统一处理,并返回。

    86310

    如何在CDH集群上部署Python3运行环境及运行Python作业

    本篇文章主要讲述如何在CDH集群基于Anaconda部署Python3的运行环境,并使用示例说明使用pyspark运行Python作业。...,即--offline参数,以及—unknown,这种方式适合安装没有依赖的python包,如果有依赖使用conda install会报错,需要搭建一个内部仓库。...Pyspark作业 ---- 这个demo主要使用spark-submit提交pyspark job,模拟从hdfs中读取数据,并转换成DateFrame,然后注册表并执行SQL条件查询,将查询结果输出到...] 4.作业执行成功 [b6g41p9vvg.jpeg] 查看Yarn界面 [7k0xhcvnr3.jpeg] 通过以上信息,可以看到作业执行成功。...Yarn查看作业是否运行成功 [fdyyy41l22.jpeg] 4.验证MySQL表中是否有数据 [1h2028vacw.jpeg] 注意:这里将数据写入MySQL时需要在环境变量中加载MySQL的JDBC

    4.1K40

    Spring Batch快速入门

    Spring Batch提供了在处理大量数据时必不可少的可重用功能,包括日志记录/跟踪、事务管理、作业处理统计信息、作业重新启动、跳过和资源管理。...总之,通过 Spring Batch 我们就能够实现简单的或者复杂的和大数据量的批处理作业Spring Batch的结构图如下: ?...Spring Boot集成Spring Batch实现一个定时的批处理作业Demo,所以不会对Spring Batch理论部分进行过多的介绍,因为其官网及网络上都有详细的参考文档。...- JOB ID由batch_job_seq分配 -- JOB 名称,与spring配置一致 -- JOB KEY 对job参数的MD5编码,正因为有这个字段的存在,同一个job如果第一次运行成功,第二次再运行会抛出...job的时候需要添加至少一个参数,这个参数最后会被写到batch_job_execution_params表中, // 不添加这个参数的话,job不会运行,并且这个参数在表中中不能重复,

    1.8K20

    Spring Batch实战(一)

    Spring Batch提供了在处理大量记录时必不可少的可重用功能,包括日志/跟踪、事务管理、作业处理统计、作业重启、跳过和资源管理。...Spring Batch既可以用于简单的用例(如将文件读入数据库或运行存储过程),也可以用于复杂的大容量用例(如在数据库之间移动大容量数据,转换数据,等等)。...该应用程序包含所有的批处理作业和开发人员使用Spring batch编写的自定义代码。批处理核心包含启动和控制批处理作业所需的核心运行时类。它包括JobLauncher、Job和Step的实现。...(7)提供一个简单的部署模型,体系结构jar完全独立于应用程序,使用Maven构建。 3、如何使用SpringBatch?...,依赖为Spring Batch Spring boot版本为2.4.5,Java版本为8

    1.5K30

    如何使用hadoop命令向CDH集群提交MapReduce作业

    1.文档编写目的 ---- 在前面文章Fayson讲过《如何跨平台在本地开发环境提交MapReduce作业到CDH集群》,那对于部分用户来说,需要将打包好的jar包在CDH集群运行,可以使用hadoop...或java命令向集群提交MR作业,本篇文章基于前面的文章讲述如何将打包好的MapReduce,使用hadoop命令向CDH提交作业。...WordCountMapper和WordCountReducer类具体请参考《如何跨平台在本地开发环境提交MapReduce作业到CDH集群》,或者你在整个github中也能完整看到。...---- 1.使用Maven命令进行编译打包,该命令运行需要在工程所在目录下运行 cd /Volumes/Transcend/work/cdhproject mvn clean package [25be7upnio.jpeg...] 6.总结 ---- 这里有几点需要注意,我们在本地环境开发MapReduce作业的时候,需要加载集群的xml配置,将打包好的MR jar包提交到集群使用hadoop命令运行时,代码里面的Configuration

    2.2K60

    【译】Spring 官方教程:创建批处理服务

    Tool Suite (STS) IntelliJ IDEA 如何完成本指南 像大多数Spring入门指南一样,你可以从头开始,完成每一步,也可以绕过已经熟悉的基本设置步骤。...你可以覆盖其中的任何一个版本,但是默认情况下它会使用Spring Boot自身版本集中的版本。 使用Maven构建项目 首先,设置基本的构建脚本。...你可以覆盖其中的任何一个版本,但是默认情况下它会使用Spring Boot自身版本集中的版本。...将批处理作业集中到一起 现在,你把实际的批处理作业集中到一起。Spring Batch提供了许多实用程序类,可以减少编写自定义代码的需要。取而代之,你可以专注于业务逻辑。.../mvnw spring-boot:run运行应用程序,或者使用 ./mvnw cleanpackage来构建JAR文件。

    2.8K80

    如何使用HTML制作个人网站( web期末大作业

    网页整体使用CSS设置了网页背景图片。页面精美包含多个排版布局,学生网页作业水平制作。...页面样式风格统一布局显示正常,不错乱,使用Div+Css技术。 菜单美观、醒目,二级菜单可正常弹出与跳转。 要有JS特效,如定时切换和手动切换图片轮播。...网站素材方面:计划收集各大平台好看的图片素材,并精挑细选适合网页风格的图片,然后使用PS做出适合网页尺寸的图片。...、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++ 等任意html编辑软件进行运行及修改编辑等操作)。...很多刚入门编程的小白学习了基础语法,却不知道语法的用途,不知道如何加深映像,不知道如何提升自己,这个时候每天刷自主刷一些题就非常重要(百炼成神),可以去牛客网上的编程初学者入门训练。

    1.3K21
    领券