Spring Boot爲使用Quartz Scheduler提供了一些方便,引入spring-boot-starter-quartz
「啓動器」,若是Quartz是可用的,則將自動配置Scheduler
(經過抽象的SchedulerFactoryBean
)。spring
下列類型的bean將自動被拾取並與Scheduler
關聯:數據庫
JobDetail
:定義一個特定的工做,JobDetail
實例能夠使用JobBuilder
API構建。Calendar
Trigger
:定義什麼時候觸發特定工做。默認狀況下,使用內存中的JobStore
,可是,若是應用程序中有DataSource
bean而且spring.quartz.job-store-type
屬性已經相應地配置,那麼能夠配置基於jdbc的存儲,以下面的示例所示:編程
spring.quartz.job-store-type=jdbc
當使用JDBC存儲時,能夠在啓動時初始化schema,以下例所示:segmentfault
spring.quartz.jdbc.initialize-schema=always
默認狀況下,經過使用Quartz庫提供的標準腳本檢測和初始化數據庫,還能夠經過設置
spring.quartz.jdbc.schema
屬性提供自定義腳本。
能夠使用Quartz配置屬性定製Quartz Scheduler配置(spring.quartz.properties.*)和SchedulerFactoryBeanCustomizer
bean,它容許編程SchedulerFactoryBean
bean進行定製化。ide
特別是,Executor
bean不與scheduler相關聯,由於Quartz提供了一種經過spring.quartz.properties
配置scheduler的方法,若是須要自定義任務執行程序,請考慮實現SchedulerFactoryBeanCustomizer
。
Jobs能夠定義setter來注入數據映射屬性,常規bean也能夠以相似的方式注入,以下例所示:spring-boot
public class SampleJob extends QuartzJobBean { private MyService myService; private String name; // Inject "MyService" bean public void setMyService(MyService myService) { ... } // Inject the "name" job data property public void setName(String name) { ... } @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { ... } }