Spring Quartz

spring 分别对Quartz的三个方面,Job & JobDetail,Trigger和Scheduler进行了封装,Spring Quartz 和 Spring Scheduling是任务调度的两种方案,两者在使用上完全没有关系,Spring Scheduling使用的是JDK的类库实现的任务调度,Spring Quartz对Quartz的封装如下:

  1. Job -> QuartzJobBean
  2. JobDetail -> JobDetailFactoryBean + MethodInvokeingJobDetailFactoryBean
  3. JobFactory -> SpringBeanJobFactory
  4. Trigger -> CronTriggerFactoryBean & SimpleTriggerFactoryBean
  5. Scheduler -> SchedulerFactoryBean
  6. ThreadPool -> LocalTaskExecutorThreadPool 用于使用java.util.concurrent.Executor来实现线程池;
  7. ClassLoaderHelper -> ResourceLoaderClassLoaderHelper

Spring Boot AutoConfigure Quartz

  1. Spring Quartz中对Quartz进行了封装,但是没有自动化配置,我们在用的时候,要自己配置SchedulerFactoryBean和TriggerFactoryBean+JobDetailsFactorybean,Spring Boot Quartz提供了自动配置的能力;
  2. 根据spring boot application配置文件中的spring.quartz前缀的配置,创建一个SchedulerFactoryBean对象,注入到Spring Ioc容器,从而在Spring IOC容器中自动生成一个Quartz Scheduler对象;
  3. QuartzAutoConfiguration的构造函数里JobDetais和Triggers是ObjectProvider,也就是说,QuartzAutoConfiguration启动时就能获得IOC容器中的所有的Quartz JobDetails对象和Quartz Triggers对象,自动配置一个SchedulerFactoryBean对象;