場景:spring集成quartz,在spring配置文件中配置quartz相關參數。spring
在以往的工做中,quartz常常沒法啓動,今天就根據之前經驗,總結一下,供你們參考。數據庫
quartz的兩個基本單元是Job和Trigger,它們在內存中分別以jobName+groupName和triggerName+GrupName惟一標識,若是兩個job的名字和羣組都相同,則必然會有一個job沒法啓動。hibernate
若在spring配置文件中配置了quartz相關參數,則不可以設置default-lazy-init="true",不然定時任務不會觸發;若工程有多個spring配置文件,則只需當前配置quartz的文件不設置default-lazy-init="true"便可。內存
若在spring配置文件中配置了quartz相關參數,則不可以設置default-autowire="byName"屬性,不然後臺會報Table 'database.qrtz_locks' doesn't exist異常,這是由於若使用了autowire,spring集成quartz,會默認使用數據庫存儲job狀態(而不是存儲在內存中),spring會自動將dataSource(hibernate配置的數據庫)配置爲quartz存儲數據庫,而咱們的數據庫中又沒有quartz所需的數據表,所以就會報出如上異常;若工程有多個spring配置文件,則只需當前配置quartz的文件不設置default-autowire="byName"便可。it