在 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
。然后您必须实现方法 afterStep
和 beforeStep
。第一个应该简单地 return null
,在 beforeStep
中你可以调用实用程序方法并保存它的 return 值。
或者,您可以使用注释 @BeforeStep
。如果您使用通常的 Java DSL,则不需要将处理器显式添加为步骤的侦听器。将其添加为处理器就足够了。
参考文档中有更多详细信息:
https://docs.spring.io/spring-batch/docs/current/reference/html/step.html#interceptingStepExecution
我有一个 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
。然后您必须实现方法 afterStep
和 beforeStep
。第一个应该简单地 return null
,在 beforeStep
中你可以调用实用程序方法并保存它的 return 值。
或者,您可以使用注释 @BeforeStep
。如果您使用通常的 Java DSL,则不需要将处理器显式添加为步骤的侦听器。将其添加为处理器就足够了。
参考文档中有更多详细信息: https://docs.spring.io/spring-batch/docs/current/reference/html/step.html#interceptingStepExecution