Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpringBatch:如何为每个作业设置作业存储库_Java_Spring_Spring Batch - Fatal编程技术网

Java SpringBatch:如何为每个作业设置作业存储库

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"> <

我正在运行多个作业,我希望每个作业都有一个单独的作业存储库(内存中实现)

请在下面找到我尝试过的bean定义。请注意,我试图用范围原型指定bean

我得到了一个
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。如果你打算这样做,你至少需要每个作业一个作业启动程序。你为什么要尝试每个作业进行回购?