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