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来开发定时器,十分简洁,有兴趣的可以看下(点击打开链接)。




你可能感兴趣的:(Spring定时器Quartz的简单示例)