Spring Quartz
spring 分别对Quartz的三个方面,Job & JobDetail,Trigger和Scheduler进行了封装,Spring Quartz 和 Spring Scheduling是任务调度的两种方案,两者在使用上完全没有关系,Spring Scheduling使用的是JDK的类库实现的任务调度,Spring Quartz对Quartz的封装如下:
- Job -> QuartzJobBean
- JobDetail -> JobDetailFactoryBean + MethodInvokeingJobDetailFactoryBean
- JobFactory -> SpringBeanJobFactory
- Trigger -> CronTriggerFactoryBean & SimpleTriggerFactoryBean
- Scheduler -> SchedulerFactoryBean
- ThreadPool -> LocalTaskExecutorThreadPool 用于使用java.util.concurrent.Executor来实现线程池;
- ClassLoaderHelper -> ResourceLoaderClassLoaderHelper
Spring Boot AutoConfigure Quartz
- Spring Quartz中对Quartz进行了封装,但是没有自动化配置,我们在用的时候,要自己配置SchedulerFactoryBean和TriggerFactoryBean+JobDetailsFactorybean,Spring Boot Quartz提供了自动配置的能力;
- 根据spring boot application配置文件中的spring.quartz前缀的配置,创建一个SchedulerFactoryBean对象,注入到Spring Ioc容器,从而在Spring IOC容器中自动生成一个Quartz Scheduler对象;
- QuartzAutoConfiguration的构造函数里JobDetais和Triggers是ObjectProvider,也就是说,QuartzAutoConfiguration启动时就能获得IOC容器中的所有的Quartz JobDetails对象和Quartz Triggers对象,自动配置一个SchedulerFactoryBean对象;