1. 程式人生 > >Spring定時器Quartz的簡單示例

Spring定時器Quartz的簡單示例

    專案開發中用到了quartz定時器,感覺很像javaJDK中的Timer類,但是不同的是,quartz提供的定時器可以按每天的固定時刻觸發,或者其他的時間。觸發時間比較人性化。

    我自己寫了個小的專案,練練手。開發Spring的quartz定時器需要spring-context.jar和quartz.jar包,我最初沒有匯入quartz.jar包,導致報錯。

    quartz的maven依賴如下:

<dependency>
	<groupId>org.opensymphony.quartz</groupId>
	<artifactId>quartz-all</artifactId>
	<version>1.6.1</version>
</dependency>

    定時器類不需要繼承自任何類。

package com.jd.service.meeting.worker;

public class MyWorker {
	public void running(){
		System.out.println("hello, world!");
	}
}

    然後在spring的配置檔案中配置這個定時器即可。
<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
	default-autowire="byName">
	
	<bean id="helloWorker" class="com.jd.service.meeting.worker.MyWorker"></bean>

	<bean id="startQuertz" lazy-init="false" autowire="no"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<bean class="org.springframework.scheduling.quartz.CronTriggerBean">
					<property name="jobDetail">
						<bean
							class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
							<property name="concurrent">
								<value>false</value>
							</property>
							<property name="targetObject">
								<ref bean="helloWorker" />
							</property>
							<property name="targetMethod">
								<value>running</value>
							</property>
						</bean>
					</property>
					<property name="cronExpression">
						<value>0/10 * * * * ?</value>
					</property>
				</bean> 
				
			</list>
		</property>
	</bean>
</beans>
    這個時間表達式指定了這個timer的觸發時間規則,我指定的是每10秒跑一次。
<property name="cronExpression">
	<value>0/10 * * * * ?</value>
</property></span>

    我的程式本地執行通過,大家配好jar包即可。

    在另一篇文章中,介紹瞭如何僅僅使用Spring來開發定時器,十分簡潔,有興趣的可以看下(點選開啟連結)。