透視Spring定時器相關(guān)功能
介紹一下Spring的定時器功能,它不僅實現(xiàn)起來方便,功能強大,而且在web開發(fā)時正好配合spring框架使用。
Spring支持jdk內(nèi)置的Timer類和Quartz Scheduler
介紹spring的定時器,當然要先介紹配置文件applicationContext.xml了。
- <bean name="job" class="org.springframework.scheduling.quartz.JobDetailBean">
- <property name="jobClass">
- <value>jaoso.news.web.action.JobAction< SPAN>value>
- < SPAN>property>
- <property name="jobDataAsMap">
- <map>
- <entry key="timeout">
- <value>10< SPAN>value>
- < SPAN>entry>
- < SPAN>map>
- < SPAN>property>
- < SPAN>bean>
說明:org.springframework.scheduling.quartz.JobDetailBean是spring對你的類進行調(diào)度的代理,在jobClass中要指定你的任務(wù)類(com.yangsq.web.action.JobAction),在jobDataAsMap中向你的任務(wù)類中注入一些信息,當然也可以reference一個,不要忘記在你的任務(wù)里加入這些屬性及set方法(有些羅嗦)。
timeout屬性設(shè)定了當服務(wù)器啟動后過10秒鐘首次調(diào)用你的JobAction。
- <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail">
- <ref bean="job"/>
- < SPAN>property>
- <property name="cronExpression">
- <value>0 0/2 * * * ?< SPAN>value>
- < SPAN>property>
- < SPAN>bean>
說明:org.springframework.scheduling.quartz.CronTriggerBean是spring提供的觸發(fā)器,在這個觸發(fā)器中設(shè)定了要觸發(fā)的job(jobDetail屬性設(shè)定了先前定義的bean),同時設(shè)定了觸發(fā)時間(cronExpression)---每隔兩分鐘(0 0/2 * * * ?),這個的設(shè)定方式最后會說明。
- <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
說明:org.springframework.scheduling.quartz.SchedulerFactoryBean這是一個spring的工廠bean,在他的triggers屬性列表中加入剛才定義的觸發(fā)器,這里可以定義多個觸發(fā)器(list嘛)。
好了,配置文件就介紹完了,該介紹com.yangsq.web.action.JobAction類了,
引入包:
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
說明:QuartzJobBean是spring自帶的,把spring的jar包加入就行了,但是前兩個包要去下了,呵呵,google吧。
- public class JobAction extends QuartzJobBean{
- private int timeout;
當然要繼承QuartzJobBean了,但是光extends不行,必須要重載他的executeInternal方法
- protected void executeInternal (JobExecutionContext ctx)
- throws JobExecutionException{
- //加入你的任務(wù)
- }
- }
好了,一個spring的時間調(diào)度完成了。
附:時間配置說明
sping定時器的時間配置十分強大,下面將介紹如何進行配置。
【編輯推薦】