春季批次bean的“步骤”或“作业”范围?

成员声音:

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

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

@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范围,这样就不会在每一步都重新创建它们。

我尝试切换stepjob,但抛出以下错误:Exception in thread "main" java.lang.IllegalStateException: No Scope registered for scope 'job'

岛屿:

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

将@Bean标记为@JobScope等效于将其标记为@Scope(value =“ job”,proxyMode = TARGET_CLASS)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章