您的位置:首页 > 编程语言 > Java开发

在Spring中使用Quartz进行任务调度(5)

2012-09-14 21:06 666 查看
创建Scheduler

Quartz的SchedulerFactory是标准的工厂类,不太适合在Spring环境下使用。此外,为了保证Scheduler能够感知Spring容器的生命周期,完成自动启动和关闭的操作,必须让Scheduler和Spring容器的生命周期相关联。以便在Spring容器启动后,Scheduler自动开始工作,而在Spring容器关闭前,自动关闭Scheduler。为此,Spring提供SchedulerFactoryBean,这个FactoryBean大致拥有以下的功能:

1)以更具Bean风格的方式为Scheduler提供配置信息;

2)让Scheduler和Spring容器的生命周期建立关联,相生相息;

3)通过属性配置部分或全部代替Quartz自身的配置文件。

来看一个SchedulerFactoryBean配置的例子:

代码清单 9 SchedulerFactoryBean配置

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">


<property name="triggers"> ①注册多个Trigger


<list>


<ref bean="simpleTrigger" />


</list>


</property>


<property name="schedulerContextAsMap">②以Map类型设置SchedulerContext数据


<map>


<entry key="timeout" value="30" />


</map>


</property>




③显式指定Quartz的配置文件地址

<property name="configLocation" value="classpath:com/baobaotao/quartz/quartz.properties" />

</bean>

SchedulerFactoryBean的triggers属性为Trigger[]类型,可以通过该属性注册多个Trigger,在①处,我们注册了一个Trigger。Scheduler拥有一个类似于ServletContext的SchedulerContext。SchedulerFactoryBean允许你以Map的形式设置SchedulerContext的参数值,如②所示。默认情况下,Quartz在类路径下查询quartz.properties配置文件,你也可以通过configLocation属性显式指定配置文件位置,如③所示。

除了实例中所用的属性外,SchedulerFactoryBean还拥有一些常见的属性:

●calendars:类型为Map,通过该属性向Scheduler注册Calendar;

●jobDetails:类型为JobDetail[],通过该属性向Scheduler注册JobDetail;

●autoStartup:SchedulerFactoryBean在初始化后是否马上启动Scheduler,默认为true。如果设置为false,需要手工启动Scheduler;

●startupDelay:在SchedulerFactoryBean初始化完成后,延迟多少秒启动Scheduler,默认为0,表示马上启动。如果并非马上拥有需要执行的任务,可通过startupDelay属性让Scheduler延迟一小段时间后启动,以便让Spring能够更快初始化容器中剩余的Bean。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: