Spring无法解析的圆形参考石英

时间:2016-03-04 15:57:55

标签: java spring spring-boot quartz-scheduler

@Autowired
private ApplicationContext applicationContext;

@Autowired
private Scheduler scheduler;

public static void main(String[] args) {
    SpringApplication.run(SchedulingApplication.class, args);
}

@PostConstruct
public void init() {
    try {
        this.scheduler.start();
    } catch (SchedulerException e) {
        LOGGER.error("Failed to start scheduler");
    }
}

@Bean
@Autowired
public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {
    SchedulerFactoryBean bean = new SchedulerFactoryBean();
    bean.setDataSource(dataSource);
    bean.setApplicationContext(applicationContext);
    bean.setAutoStartup(true);
    bean.setConfigLocation(new ClassPathResource("/config/quartz.properties"));

    AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
    jobFactory.setApplicationContext(applicationContext);

    bean.setJobFactory(jobFactory);

    return bean;
}

创建名为'schedulerFactoryBean'的bean时出错:请求的bean当前正在创建:是否存在无法解析的循环引用?

使用spring boot 1.2.3,不适用于最新的1.3.2。

1 个答案:

答案 0 :(得分:0)

SchedulerFactoryBean用于创建Scheduler的实例。 在您的配置中,Spring会在执行@Bean方法之前尝试注入Scheduler,因此在创建SchedulerFactoryBean之前。 这就是你得到例外的原因。 如果你拆分它,使用SchedulerFactoryBean的一个配置和使用Scheduler的另一个配置应该可以工作。