在 Spring 批处理中,与 ItemReader 调用链接我想调用静态 util 方法来填充字符串

In Spring Batch, linked with a ItemReader call I want to call a static util method to populate a string

我有一个 Spring 批处理 reader,配置如下。 此 reader 正在从数据库中读取,并且一次读取页面大小记录。

    @Autowired
    private SomeCreditRepot someCreditRepo;

    public RepositoryItemReader<SomeCreditModel> reader() {
         RepositoryItemReader<SomeCreditModel> reader = new RepositoryItemReader<>();
         reader.setRepository(someCreditRepo);
         reader.setMethodName("someCreditTransfer");
         .
         .
         
         ..
         return reader;
      }

我想调用utils方法,

     refValue = BatchProcessingUtil.generateSomeRefValue();

在处理器步骤之前,以便 reader 获取的所有记录将具有与上述调用给定的相同值。

这样 reader 获取的所有实体将在处理器中获得相同的值。

然后这个 refValue 将被写入另一个 table StoreRefValue(table).

在 Spring 批处理中执行此操作的正确方法是什么? 我是否应该触发查询以将 refValue 写入处理器中的 table StoreRefValue?

您可以让您的处理器实现接口 StepExecutionListener。然后您必须实现方法 afterStepbeforeStep。第一个应该简单地 return null,在 beforeStep 中你可以调用实用程序方法并保存它的 return 值。

或者,您可以使用注释 @BeforeStep。如果您使用通常的 Java DSL,则不需要将处理器显式添加为步骤的侦听器。将其添加为处理器就足够了。

参考文档中有更多详细信息: https://docs.spring.io/spring-batch/docs/current/reference/html/step.html#interceptingStepExecution