1. 程式人生 > >Quartz2.x學習筆記(四):spring注入異常解決方法

Quartz2.x學習筆記(四):spring注入異常解決方法

在使用Quartz與spring整合時,有時需要在Job任務類裡注入spring的bean。如下:

那麼問題來了,當你啟動專案時,會發現報了空指標異常:
查閱資料以及百度之後,終於找到一個解決辦法: spring-content jar包下自帶了支援quartz的類,我們寫個類繼承它:
public class JobFactory extends AdaptableJobFactory {
     @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;

    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
        //呼叫父類的方法
        Object jobInstance = super.createJobInstance(bundle);
        //進行注入
        capableBeanFactory.autowireBean(jobInstance);
        return jobInstance;
    }
}
AdaptableJobFactory就是org.springframework.scheduling.quartz的類。 完成後。在spring的配置檔案里加上:
<bean id="jobFactory" class="com.buoy.util.JobFactory"></bean>
注意class寫的是上面的jobFactory所在的包路徑 然後,在你配置job排程器的地方新增上屬性:
 <property name="jobFactory" ref="jobFactory"></property>
這裡我的如下:
<!-- 3.定義排程器,並將Trigger註冊到排程器中 -->
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
         <property name="jobFactory" ref="jobFactory"></property>
        <property name="triggers">
            <list>
                <!-- <ref bean="simpleTrigger"/> -->
                <ref bean="tirggerBuoy"/>
            </list>
        </property>
        <property name="autoStartup" value="true" />
    </bean>