Quartz與Spring集成—— SchedulerFactoryBean的初始化分析

前言

Quartz是一個開源的定時調度框架,支持集羣部署。咱們能夠經過其Java API來使用它,或者經過Spring來配置與管理,也能夠結合使用兩種方式。本文重點分析Quartz2.2.3與Spring4.3.0.RELEASE集成時的初始化過程。java

SchedulerFactoryBean

與Spring集成時一般須要在Spring配置文件中加入SchedulerFactoryBean這個工廠Bean,例如:spring

<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="overwriteExistingJobs" value="true"/>
        <property name="configLocation" value="classpath:quartz.properties"/>
    </bean>

再來看看SchedulerFactoryBean的類定義:框架

public class SchedulerFactoryBean extends SchedulerAccessor implements FactoryBean<Scheduler>, BeanNameAware,  
        ApplicationContextAware, InitializingBean, DisposableBean, SmartLifecycle {

從中看到其實現了FactoryBean、BeanNameAware、ApplicationContextAware、InitializingBean、DisposableBean等經常使用接口,這些接口的具體意義本文不做贅述,不瞭解的能夠專門研究下Spring的原理和源碼實現。根據Spring的原理咱們知道,若是Bean自己實現了InitializingBean接口,那麼在Spring加載解析BeanDefinition,並初始化Bean後會調用SchedulerFactoryBean的afterPropertiesSet方法,這裏只會挑出其中的關鍵代碼進行分析。spa

初始化SchedulerFactory

在afterPropertiesSet中首先會初始化SchedulerFactory,代碼以下:code

相關文章
相關標籤/搜索