Spring Boot 參考指南(Quartz Scheduler)

39. Quartz Scheduler

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 {
        ...
    }

}

上一篇:Hazelcast

下一篇:Spring Integration

相關文章
相關標籤/搜索