Java SpringBatch:如何为每个作业设置作业存储库
我正在运行多个作业,我希望每个作业都有一个单独的作业存储库(内存中实现) 请在下面找到我尝试过的bean定义。请注意,我试图用范围原型指定bean 我得到了一个Java SpringBatch:如何为每个作业设置作业存储库,java,spring,spring-batch,Java,Spring,Spring Batch,我正在运行多个作业,我希望每个作业都有一个单独的作业存储库(内存中实现) 请在下面找到我尝试过的bean定义。请注意,我试图用范围原型指定bean 我得到了一个java.lang.IllegalArgumentException:JobExecution必须已经保存了异常 <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <
java.lang.IllegalArgumentException:JobExecution必须已经保存了异常
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>
<bean id="jobRepository"
class="org.springframework.batch.core.repository.support.SimpleJobRepository"
scope="prototype">
<constructor-arg>
<bean class="org.springframework.batch.core.repository.dao.MapJobInstanceDao"/>
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.batch.core.repository.dao.MapJobExecutionDao" />
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.batch.core.repository.dao.MapStepExecutionDao"/>
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.batch.core.repository.dao.MapExecutionContextDao"/>
</constructor-arg>
</bean>
这一个对我来说很有用,例如作为单元测试作业库
:
<bean id="jobRepository"
class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
</bean>
作业存储库只创建一次,因此无论您是否使用原型,您能否再解释一下如何运行作业?您可能需要创建自己的JobLauncher实现(和其他实现)来完成此操作@Michael Lange在本例中是正确的,因为您正在创建单例简单作业启动器,它将创建一个“单”作业repo。如果你打算这样做,你至少需要每个作业一个作业启动程序。你为什么要尝试每个作业进行回购?