我需要将Job ExecutionId存储为Entity的一个字段.(我正在使用JpaItemWriter)这里的一个主题是从StepExcecution解释,我可以得到StepContext - > JobExecution.在那种情况下如何获得StepExecution?
(我不需要将任何数据从一个步骤传递到另一个步骤,我只需要JobExecuionId)
感谢您的帮助,Muneer Ahmed
我建议您使用一个处理器来更新您的实体的价值。如果您的处理器直接实现,ItemProcessor<T>那么您将不会自动获得StepExecution. 要获取StepExecution,请执行以下操作之一;- 实现 StepExecutionListener 并将其设置为方法中的变量beforeStep- 创建一个名为的方法[something](StepExecution execution)并用其注释@BeforeStep
通过侦听器注入 StepExecution 后,您就可以获取 jobExecutionId 并将其设置到您的实体中
public class MyEntityProcessor implements ItemProcessor<MyEntity, MyEntity> {
private long jobExecutionId;
@BeforeStep
public void beforeStep(StepExecution stepExecution) {
jobExecutionId = stepExecution.getJobExecutionId();
}
@Override
public MyEntity process(MyEntity item) throws Exception {
//set the values
item.setJobExecutionId(jobExecutionId);
//continue
return item;
}
}
Run Code Online (Sandbox Code Playgroud)
我们可以使用 Itemprocessor 的 @Scope("job") 将范围设置为作业,并且可以使用 @Value("#{jobExecution}") 表达式轻松获取 JobExecution,如下所示。
@Service
@Scope("job")
public class XsltTransformer implements ItemProcessor<Record, Record> {
@Value("#{jobExecution}")
private JobExecution jobExecution;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15622 次 |
| 最近记录: |