java - 如何按顺序初始化步骤?

标签 java spring-batch

我是 Spring Batch 的新手,我正在尝试执行作业的两个步骤。两者都必须在执行 read、process 和 write 方法之前初始化一些东西。但我不明白我该怎么做。每次我启 Action 业时,这两个步骤都会同时初始化。我希望它们按作业顺序初始化。

简单来说,我做了类似的事情:

public Job job() {
    return jobBuilderFactory.get("job")
            .incrementer(new RunIdIncrementer())
            .start(step1())
            .next(step2())
            .build();
}

public Step step1() {

    return stepBuilderFactory.get("step1")
            .<Model1, Model1>chunk(2)
            .reader(reader1())
            .processor(processor1())
            .writer(writer1())
            .build();
}

public Step step2() {

    return stepBuilderFactory.get("step2")
            .<Model2, Model2>chunk(2)
            .reader(reader2())
            .processor(processor2())
            .writer(writer2())
            .build();
}

@StepScope
public Reader1 reader1() {
    return new Reader1();
}


@StepScope
public Processor1 processor1() {
    return new Processor1();
}

@StepScope
public Writer1 writer1() {
    return new Writer1();
}


@StepScope
public Reader2 reader2() {
    return new Reader2();
}


@StepScope
public Processor2 processor2() {
    return new Processor2();
}

@StepScope
public Writer2 writer2() {
    return new Writer2();
}

这是我的 Reader2 类,我想在第一步之后初始化它。 Reader1 也是同样的东西。打印两个“test”,然后开始运行步骤。

public class Reader2 implements ItemReader<Model2>{

    public Reader2() {
        initialize();
    }

    public void initialize() {
        System.out.println("test");
    }

    @Override
    public Model2 read() throws Exeption {
    .
    .
    .
    } 
}

最佳答案

我会使用 StepExecutionListener#beforeStep对于这个问题。它更适合步骤初始化,而不是在读取器的构造函数中进行初始化。

关于java - 如何按顺序初始化步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57792490/

相关文章:

java - 将 DB2 许可证集成到独立 JAR 应用程序中

java - spring batch rowNum不增加

java - JSF ViewScoped 变量无法重定向到同一页面

Java-重写泛型接口(interface)方法时如何获取具体参数类型

spring - 并行 Spring 批处理作业的推荐方法

spring - 将动态资源注入(inject) Spring Batch ItemReader

java - 基于项目字段的Spring批量CompletionPolicy

java - 如何使用Spring-Batch批量插入?

java - AWS EC2 Tomcat Java Webapp - 我如何管理 bot http session

java - Kotlin:如何在运行时的 OneClass<T> 中获取实际的泛型类型 T