如何在Spring 4.3.15更新后注入SchedulerFactoryBean

时间:2018-04-24 19:04:26

标签: java spring quartz-scheduler

从Spring 4.3.2升级到Spring 4.3.16后,我收到以下错误:

org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'schedulerFactory': FactoryBean which is currently in creation returned null from getObject

我正在将一个Quartz Scheduler注入我的一个bean中,如下所示:

// XML Config

<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="byName">
    <property name="jobFactory">
        <bean class="org.springframework.scheduling.quartz.SpringBeanJobFactory"/>
    </property>
    <property name="applicationContextSchedulerContextKey" value="applicationContext"/>
    <property name="dataSource" ref="myDS" />
    <property name="triggers">
        <list>
            <ref bean="updateTrigger"/>
            <ref bean="queueUpdateTrigger"/>
        </list>
    </property>
    <property name="quartzProperties">
        <props>
            <prop key="org.quartz.scheduler.instanceName">MyQuartzScheduler</prop>
            <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
            <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
            <prop key="org.quartz.jobStore.isClustered">true</prop>
            <prop key="org.quartz.jobStore.clusterCheckinInterval">60000</prop>
            <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.oracle.OracleDelegate</prop>
            <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
            <prop key="org.quartz.threadPool.threadCount">2</prop>
            <prop key="org.quartz.threadPool.threadPriority">5</prop>
            <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
            <prop key="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread">true</prop>
        </props>
    </property>
</bean>

<bean name="UpdateJobUtils" class="app.job.UpdateJobUtils" autowire="byType">
    <property name="schedulerFactory" ref="schedulerFactory" />
</bean>

//豆

public class UpdateJobUtils {
    private StdScheduler schedulerFactory;

    public void setSchedulerFactory(StdScheduler schedulerFactory) {
        this.schedulerFactory = schedulerFactory;
    }

    ...
}

这在Spring 4.3.2中有效,直到4.3.14。我看到https://jira.spring.io/browse/SPR-16439被移植到4.3.15所以我想知道它是否会改变我应该使用这个类的方式?

1 个答案:

答案 0 :(得分:0)

schedulerFactory在其配置上有autowire =“byName”。

我不确定为什么会这样,但删除它似乎已经修复了异常。