我想将自定义(只读)元数据关联到Spring Batch作业、流程、步骤。(这与在步骤执行级别将任意数据存储到执行上下文中是不同的!如果我能做这样的事情,那就太好了:
@Bean
public Step<MyMetadata> sampleStep(JobRepository jobRepository, PlatformTransactionManager transactionManager) {
MyMetadata myMetaData = ...;
return new StepBuilder<M>("mySampleStep", jobRepository)
.withCustomMetadata(myMetaData);
.<String, String>chunk(10, transactionManager)
.reader(itemReader())
.writer(itemWriter())
.build();
}
字符串
..以便稍后,我可以取回我的自定义元数据(比如我想构建UI控制台来可视化作业、步骤、流程):
...
SimpleJob simpleJob = ...;
Step<MyMetadata> myStep = (Step<MyMetadata>)simpleJob.getStep("myStep")
MyMetadata myMetadata = myStep.getCustomMetadata();
型
不幸的是,Spring Batch API提供了一个迷宫般的构建器来创建具体的类,无法以上述方式扩展作业、步骤或流。Spring Batch文档中没有任何东西表明这是可能的。
有没有人提出如何实现这一点的建议?
1条答案
按热度按时间cngwdvgl1#
看起来你想在步骤/作业之前和之后做一些工作。您是否考虑过使用StepExecutionListener或JobExecutionListener?那些听众允许他们在工作之余做一些工作。例如,您可以将一些数据存储在db、缓存或executionContext(步骤/作业级别)中。如果我没理解错你的需求。