创建 Spring Batch 版的 Hello World(第二篇)

Spring Boot 基于 convention over configuration 的原则,即约定优于配置的原则。提供了一个很方便的创建 Spring 应用的工具和框架。步骤如下:

1 打开网址

在浏览器搜索框中搜:start.spring.io,打开后会看到如下界面,一个能够帮助我们创建 SpringBoot 的 Maven 项目。
create-project

  • Project:可以选择 Maven Project,Gradle Project 中的一个,在这里我选择的是 Maven Project
  • Language:选择 Java
  • Spring Boot:选择 2.1.10 版本
  • Project Metadata:
    • Group:com.batch
    • Artifact:demo
  • Dependencies:搜索 Spring Batch,然后选中他。

配置完成之后如下所示:
project-create
完成上的配置之后,点击 “Generate -Ctrl…” ,然后会自动帮助我们下载一个 Maven Project 压缩包,解压后导入到 IntelliJ IDEA 中 。

2 创建一个简单的 Job

  1. 创建一个 configuration 包 config;

  2. List item

  3. 在 config 包下创建 JobConfiguration 类,在类上标注 “@Configuration”、“@EnableBatchProcessing”,有了这两个注解,我们可以配置与 Job 相关的信息;

  4. 使用 @Autowired 注解来注入我们所需要的依赖:JobBuilderFactory、StepBuilderFactory;

  5. 目录结构如下
    project-structure
    在 JobConfiguration 类中 创建一个了一个 helloWorldJob() 和一个 step1() 方法。为了节省篇幅,我省略了导包部分的代码,代码如下:

  6. JobConfiguration.java

package com.batch.config;

@Configuration
@EnableBatchProcessing
public class JobConfiguration {

    private SimpleDateFormat format = new SimpleDateFormat("yyy-MM-dd HH:mm:ss");

    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job demoJob() {
        return jobBuilderFactory.get("job: " + format.format(new Date()))
                .start(demoStep())
                .build();
    }

    @Bean
    public Step demoStep() {
        return stepBuilderFactory.get("step: " + format.format(new Date()))
                .tasklet(new Tasklet() {
                    @Override
                    public RepeatStatus execute(
                        	StepContribution stepContribution, 
                        	ChunkContext chunkContext) throws Exception {
                        System.out.println("Hello Spring Batch.");
                        return RepeatStatus.FINISHED;
                    }
                }).build();
    }
}

注意:避免运行出错,再次运行时,都要修改 Job 和 Step 的名称,所以在创建 Job 和 Step 时都在其名称的后面都加上了:format.format(new Date()) 。因为 Spring Batch 的每一次运行, Job 和 Step 的状态都会被记录。

  • demoJob():需要返回一个 Job 对象,通过 jobBuilderFactory 工厂去创建一个 Job,给 Job 取个名字,即 get() 方法里面得参数。有了 Job 之后,通过 start() 方法去就可以启动 demoStep()。
  • demoStep():同样的,需要 stepBuilderFactory 去创建 step ,该 step 取名为 get() 中的参数, tasklet() 就是 demoStep 所作的一个任务。但 step 可重复,如果step失败了,下次可能再运行,为了避免这种情况,所以 return 的时候返回一个 RepeatStatus.FINISHED
  1. 运行程序
    error
    程序运行的时候,报错了。这是因为 Spring Batch 需要一个持久化的内容,即数据库。例如,需要数据库去保存 Job,Step 运行的状态信息。在此之前,我们没有配置任何数据,因而程序运行时,它尝试去找内存数据库或嵌入式数据库,没有找到,所以报错。
  2. 配置 Spring 的 H2 数据库
    在 pom 文件中添加 h2 数据库依赖
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<version>1.4.200</version>
</dependency>
  1. 再次运行程序,控制台的结果如下
    runging
    对上面的数字意义进行详细的解释:
    “1” 表示启动的应用程序是FirstJobApplication,在机器 HSDS190913X 上运行,进程 PID 为 7212;
    “2” 没有设置数据库类型,使用的是内置的数据库 H2;
    “3” 程序运行用时为 2.827s
    “4” Job 是一个 SimpleJob,启动的 Job 名称为 name=job: 2019-11-22 19:53:30执行的 Step,Step的名称为:[step: 2019-11-22 19:53:30];
    “5” 在控制台打印的信息为:Hello Spring Batch.
    “6” Job 运行的状态为:completed
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值