Quartz2.x學習筆記(四):spring注入異常解決方法
阿新 • • 發佈:2019-01-08
在使用Quartz與spring整合時,有時需要在Job任務類裡注入spring的bean。如下:
那麼問題來了,當你啟動專案時,會發現報了空指標異常:
查閱資料以及百度之後,終於找到一個解決辦法: spring-content jar包下自帶了支援quartz的類,我們寫個類繼承它:
那麼問題來了,當你啟動專案時,會發現報了空指標異常:
查閱資料以及百度之後,終於找到一個解決辦法: spring-content jar包下自帶了支援quartz的類,我們寫個類繼承它:
AdaptableJobFactory就是org.springframework.scheduling.quartz的類。 完成後。在spring的配置檔案里加上: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; } }
<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>