java - Spring Batch : How to pass data from StepExecution to JobExecution without persisting it (that is, 不使用 ExecutionContext)?

标签 java spring spring-batch

我有一个 JobExecutionListener.afterJob() 实现,它打印从所有先前步骤执行中获得的一些信息:

JobExecutionListener.beforeJob():

jobExecution.getExecutionContext().putString("key", "");

步骤1:StepExecutionListener.beforeStep():

ExecutionContext context = stepExecution.getJobExecution().getExecutionContext();
context.putString("key", context.getString("key") + "Hello");

步骤2:StepExecutionListener.beforeStep():

ExecutionContext context = stepExecution.getJobExecution().getExecutionContext();
context.putString("key", context.getString("key") + " World!");

JobExecutionListener.afterJob():

System.out.println(jobExecution.getExecutionContext().getString("key"));
// results in "Hello World!"

但是当执行这样的作业时,这些数据将被持久化(例如,在BATCH_JOB_EXECUTION_CONTEXT表中)。如何避免这种情况?

最佳答案

使用外部 bean 保存要在步骤之间传递的数据;此外部 bean 未持久保存,您需要连接到 SB 工件或监听器。

关于java - Spring Batch : How to pass data from StepExecution to JobExecution without persisting it (that is, 不使用 ExecutionContext)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22810776/

相关文章:

spring.job.启用: true causing junit jobs to run twice

java - 如何使可变方法将单个数组作为可变参数数组的第一个值?

java - 将未实现的方法委托(delegate)给 Java 中包含的对象的最短方法是什么?

java - 如何在 Spring Boot 的每个请求中获取当前用户?

java - 如何控制一个Spring应用中有多少个线程?

java - 在 Tasklet 实现上添加可跳过的异常类

java - 在下次运行中使用上次成功运行日期进行查询

java - 在测试服务器中部署时无法访问 java 类文件

java - 有没有办法将系统剪贴板中的文件作为附件粘贴到 MS Exchange 的电子邮件中?

java - 如何为两个不同的 session 配置两个hibernate transactionManager