当前位置: 首页 > 知识库问答 >
问题:

Java配置中的Spring批处理抽象步骤定义?

尚恩
2023-03-14

我的Spring Batch作业配置有5个步骤,除了阅读器之外,所有步骤都是相同的。有没有一种方法可以把步骤的所有其他部分抽象成“父”步骤,这样我就不需要重复所有的事情?我知道这可以用XML完成,但是我不知道java的等价物。

以下是其中一个步骤:

public Step quarterlyStep(FileIngestErrorListener listener, ItemReader<DistributionItem> quarterlyReader) {
    return stepBuilderFactory.get("quarterlyStep")
            .<DistributionItem,DistributionItem>chunk(10)
            .reader(quarterlyReader)  // The only thing that changes among 5 different steps
                .listener(listener.asReadListener())
            .processor(processor())
                .listener(listener.asProcessListener())
            .writer(writer())
                .listener(listener.asWriteListener())
            .faultTolerant()
            .skip(ValidationException.class)
            .skip(ExcelFileParseException.class)
            .build();
}

以下是其中一位读者的定义:

@Bean
@JobScope
public PoiItemReader<DistributionItem> yearEndReader(@Value("#{jobExecutionContext['filename']}") String filename) {
    PoiItemReader<PortfolioFundsDistributionItem> reader = new PoiItemReader<>();
    reader.setLinesToSkip(1);
    reader.setRowMapper(yearEndRowMapper());
    reader.setResource(new FileSystemResource(filename));
    return reader;
}

共有1个答案

韦原
2023-03-14

您可以执行以下操作:

private StepBuilderFactory stepBuilderFactory;

private SimpleStepBuilder<Integer, Integer> createBaseStep(String stepName) {
    return stepBuilderFactory.get(stepName)
            .<Integer, Integer>chunk(5)
            .processor(itemProcessor())
            .writer(itemWriter());
}

@Bean
public Step step1(ItemReader<Integer> itemReader) {
    return createBaseStep("step1")
            .reader(itemReader)
            .build();
}

@Bean
public Step step2(ItemReader<Integer> itemReader) {
    return createBaseStep("step2")
            .reader(itemReader)
            .build();
}
 类似资料:
  • 我第一次使用Spring batch,我需要一些关于验证步骤的帮助。 在真正开始我的批处理作业之前,我需要对要处理的文件进行一些验证,例如: 使用数据库中的信息检查名称 使用来自系统和数据库的信息检查第一行和最后一行(特定) 用第一行中的数据检查总行号 在那之后,我真的可以开始我的批处理工作了。 我认为有多个步骤相互链接,第一步进行验证,如果文件无效,则进入错误步骤。 我如何进行验证?所有找到的阅

  • 我正在尝试修复Spring Batch中的一个问题,这个问题最近一直困扰着我们的系统。我们有一份工作,在大多数情况下都很好。下载和处理数据是一个多步骤的工作。 问题是有时工作会爆棚。也许我们试图连接到的服务器抛出了错误,或者我们在工作进行到一半时关闭了服务器。此时,下次我们的quartz调度程序尝试运行该作业时,它似乎什么也不做。以下是此作业定义的删节版本: 委婉地说,我是Spring Batch

  • 我们正在处理一个Spring批处理项目(Spring Boot1.2.2.Release),要求使用Spring SFTP集成以一定频率轮询从服务器位置读取文件。我们使用java config实现了Spring批处理,并在使用Spring Integration java config的过程中实现了Spring批处理。我找不到描述上述情况的例子。我浏览了各种链接,但看到的主要是XML配置示例。 h

  • 当我查看Spring Batch留档以并行执行步骤时,我只看到它通过XML的配置,如下所示。 我正在使用Spring批处理编写一个应用程序,我也使用了Spring Boot,我的所有配置都是使用注释完成的。是否有一个我可以使用Java配置来配置拆分步骤的方法?我查看了Spring Batch中Step interface的API文档,但它没有Split Step的默认实现。有没有办法使用现有的默认

  • 我使用Spring Batch引导示例。在这个例子中,我希望将基于XML的应用程序转换为基于注释的应用程序。然而,我正在努力配置使用@Bean在步骤创建确切的配置。 作业配置。JAVA

  • 我正在做一个项目,我将使用Spring批处理和Spring集成来创建工作流系统。这个工作流系统应该能够从队列中读取消息,这实际上是来自客户端的作业请求,根据作业请求类型,我需要调用一些7-8系统。 每个系统从某个位置读取输入文件(通常是一个集中存储系统,其中所有输入文件都存储在客户提交的文件中),对其进行处理,然后将其传递给下一个系统,最终我应该能够响应客户端,例如SUCCESS如果它被所有系统成