如果我有一个Web应用程序,其应用程序上下文会为我的webapp和所有作业配置文件加载所有内容,并且如果我在作业中有一个简单的ItemReader而没有scope =" step",读者是单身人士吧?因此,如果我通过SimpleJobLauncher从控制器启动两次我的工作,我将使用相同的bean,对吧?除非我把scope =" step",为了每个作业执行一个bean?
另一方面,如果我从CommandLineJobRunner启动作业,我将有两个不同的应用程序上下文,所以两个不同的bean,对吗?
我的断言有效吗?
由于
答案 0 :(得分:1)
是的,这是正确的。基本上,SpringContext中的每个Bean实例都是一个单例。
但是,大多数读者或作家都有州。例如,FlatFileItemReader只能运行一次,之后它指向文件的末尾并且已经调用了它的“close”方法。因此,如果您只是再次启动作业,它将无法工作,因为FlatfileItemReader已关闭。
对于这种情况,您需要使用sope = step定义它们。