gpt4 book ai didi

java - "Step"或 "Job"Spring-Batch bean 的范围?

转载 作者:IT老高 更新时间:2023-10-28 13:50:07 25 4
gpt4 key购买 nike

我正在使用 Spring-Batch v3.0.0 进行批量导入。有一个 StepScope 和一个 JobScope。我怎么知道它们中的哪一个是合适的?

例如,如果我定义了一个应该使用特定 EntityManager 的自定义 ItemReaderItemWriter,它可能如下所示:

@Bean
@Scope("step") //@Scope("job") //custom scope required to inject #jobParameters
public JpaItemWriter<T> jpaItemWriter(EntityManagerFactory emf) {
JpaItemWriter<T> writer = new JpaItemWriter<T>();
writer.setEntityManagerFactory(emf);
return writer;
}

但是这里的范围是什么?为什么?

使用 step 范围执行是可行的,但我觉得 itemWriters 可能应该属于 job 范围,这样它们就不会在每一步都重新创建。

我尝试将 step 切换到 job,但这会引发以下错误: 线程“main”java.lang.IllegalStateException 中的异常:没有为范围“job”注册范围

最佳答案

从 Spring-Batch v3.0.1 开始,您可以使用 @JobScope

Marking a @Bean as @JobScope is equivalent to marking it as @Scope(value="job", proxyMode=TARGET_CLASS)

关于java - "Step"或 "Job"Spring-Batch bean 的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24017673/

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