在spring批处理中,没有范围=" ..."?的ItemReader的范围是什么?

时间:2016-07-01 14:56:06

标签: spring-batch

如果我有一个Web应用程序,其应用程序上下文会为我的webapp和所有作业配置文件加载所有内容,并且如果我在作业中有一个简单的ItemReader而没有scope =" step",读者是单身人士吧?因此,如果我通过SimpleJobLauncher从控制器启动两次我的工作,我将使用相同的bean,对吧?除非我把scope =" step",为了每个作业执行一个bean?

另一方面,如果我从CommandLineJobRunner启动作业,我将有两个不同的应用程序上下文,所以两个不同的bean,对吗?

我的断言有效吗?

由于

1 个答案:

答案 0 :(得分:1)

是的,这是正确的。基本上,SpringContext中的每个Bean实例都是一个单例。

但是,大多数读者或作家都有州。例如,FlatFileItemReader只能运行一次,之后它指向文件的末尾并且已经调用了它的“close”方法。因此,如果您只是再次启动作业,它将无法工作,因为FlatfileItemReader已关闭。

对于这种情况,您需要使用sope = step定义它们。