使用JobStep进行Spring批量配置无法加载

时间:2015-03-05 12:57:19

标签: spring spring-batch spring-batch-admin

我尝试使用JobStep s(在此处推荐:How to run spring batch jobs in parallel)尝试在SpringBatch中链接作业。

@Configuration
public class JobFlowConfiguration {

    @Bean
    public Step jobStep1(StepBuilderFactory stepBuilderFactory, Job job1) {
        return stepBuilderFactory.get("jobStep1").job(job1).build();
    }

    @Bean
    public Step jobStep2(StepBuilderFactory stepBuilderFactory, Job job2) {
        return stepBuilderFactory.get("jobStep2").job(job2).build();
    }

    @Bean
    public Job flowJob(JobBuilderFactory jobBuilderFactory, Step jobStep1, Step jobStep2) {
        return jobBuilderFactory.get("flowJob").incrementer(new RunIdIncrementer()).flow(jobStep1).next(jobStep2).end().build();
    }

}

我面临的问题是,当加载具有此作业定义的配置时,我得到了

Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'job1': Requested bean is currently in creation: Is there an unresolvable circular reference?
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:347)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1127)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1051)

如果没有这个配置,所有引用的作业都可以正常工作,并且应用程序(运行SpringBoot的SpringBatch Admin)加载时没有任何问题。

我确定这些配置之间没有循环引用。对我来说,看起来首先所有Step在任何Job之前被加载但是它失败了,因为有一个Step(jobStep1)取决于Job(job1 )。

我还绑定从组件扫描中排除此配置类,然后在组件扫描后显式加载它。

任何想法我做错了什么?


更新

这是一个具有确切问题{​​{3}}的示例应用程序(使用正确的分支:jobstep_example

导致问题的类/配置是ImportUserFlowJobConfiguration

要启动SpringBatchAdmin以查看问题。


更新:创建的作业如下:

@Bean
public Job job1(JobBuilderFactory jobs, Step s1) {
   return jobs.get("job1").incrementer(new RunIdIncrementer()).flow(s1).end().build();
}

0 个答案:

没有答案