gpt4 book ai didi

java - Spring Batch,通过作业的步骤可变

转载 作者:行者123 更新时间:2023-12-01 11:16:52 24 4
gpt4 key购买 nike

我正在尝试在 Spring Batch 中创建一个作业,但我找不到任何东西..我的程序看起来像这样:

  • 创建 id 列表的 tasklet
  • 使用此列表获取数据库中的字符串并将它们连接起来的阅读器
  • 一位作家这个字符串并将其写入文件
  • 使用 id 列表的任务组并更新数据库。

首先,它是我的批处理结构的最佳选择吗?

主要问题是我不知道如何获取 Reader 和最后一个 Tasklet 中的 id 列表。我正在使用 Spring 并且我已经尝试过:

    <bean id="idList" class="java.util.ArrayList" scope="job" />

<bean id="myFirstTasklet" class="myFirstTasklet"
<property name="idList" ref="idList" />
</bean>

<bean id="myReader" class="myReader"
<property name="idList" ref="idList" />
</bean>

<bean id="mySecondTasklet" class="mySecondTasklet"
<property name="idList" ref="idList" />
</bean>

在创建 Reader 和第二个 tasklet 之前,tasklet 可以更新我的列表吗?

最佳答案

您可以将值放入tasklet的ExecutionContext中,然后在其他tasklet中检索它。请参阅下面的代码:

第一个小任务内部-

public RepeatStatus execute(StepContribution stepContribution,
ChunkContext chunkContext) throws Exception {

//Putting value in Execution Context
chunkContext.getStepContext().getStepExecution().getJobExecution()
.getExecutionContext()
.put(Constants.DATA_LIST, idList);

}

第二个小任务内部:

public RepeatStatus execute(StepContribution contribution,
ChunkContext chunkContext) throws Exception {

//Retrieving value from Execution context
(ArrayList) chunkContext.getStepContext()
.getStepExecution().getJobExecution().getExecutionContext()
.get(Constants.DATA_LIST);

}

还要确保将您的 tasklet 的范围标记为步骤:

<bean id="mySecondTasklet" class="mySecondTasklet" scope="step" >

关于java - Spring Batch,通过作业的步骤可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com