`
maybe723
  • 浏览: 44937 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring中Quartz的使用

阅读更多

QuartzTask类;

import java.util.Date;

public class QuartzTask {
	public void execute() throws Throwable {
		Date now = new Date();
		System.out.println(now);
	}
}

 

   quartz.xml的文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<!-- 任务类 -->
	<bean id="QuartzTask" class="QuartzTask" />

	<!-- 目标任务类和方法 -->
	<bean id="MethodInvokingJobDetailFactoryBean"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="QuartzTask" />
		</property>
		<property name="targetMethod">
			<value>execute</value>
		</property>
	</bean>

	<!-- 任务设置情况 -->
	<bean id="CronTriggerBean"
		class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail">
			<ref bean="MethodInvokingJobDetailFactoryBean" />
		</property>
		<property name="cronExpression">
			<value>0/1 * * * * ?</value>
		</property>
	</bean>

	<!-- 任务启动 -->
	<bean id="SchedulerFactoryBean"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="CronTriggerBean" />
			</list>
		</property>
	</bean>
</beans>

 

Test类:

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
	public static void main(String[] args) throws Exception {

		new ClassPathXmlApplicationContext("tarena/quartz.xml");


	}
}

 

  参数说明:

 

  0 0 10,14,16 * * ?      每天上午10点,下午2点,4点
0 0/30 9-17 * * ?       朝九晚五工作时间内每半小时
0 0 12 ? * WED       表示每个星期三中午12点
0 0 12 * * ?      每天中午12点触发
0 15 10 ? * *       每天上午10:15触发
0 15 10 * * ?       每天上午10:15触发
0 15 10 * * ? *      每天上午10:15触发
0 15 10 * * ? 2008    2008年的每天上午10:15触发
0 * 14 * * ?       在每天下午2点到下午2:59期间的每1分钟触发
0 0/5 14 * * ?       在每天下午2点到下午2:55期间的每5分钟触发
0 0/5 14,18 * * ?     在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
0 0-5 14 * * ?       在每天下午2点到下午2:05期间的每1分钟触发
0 10,44 14 ? 3 WED    每年三月的星期三的下午2:10和2:44触发
0 15 10 ? * MON-FRI   周一至周五的上午10:15触发
0 15 10 15 * ?       每月15日上午10:15触发
0 15 10 L * ?        每月最后一日的上午10:15触发
0 15 10 ? * 6L       每月的最后一个星期五上午10:15触发
0 15 10 ? * 6L 2004-2008    2004年至2008年的每月的最后一个星期五上午10:15触发
0 15 10 ? * 6#3     每月的第三个星期五上午10:15触发
0/1 * * * * ?    每秒钟触发一次
0 0/1 * * * ?    每分钟解发一次
0 0 0/1 * * ?    每小时解发一次

 

 

触发器利用一系列特殊字符,如下所示:

反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
星号(*)字符是通配字符,表示该字段可以接受任何可能的值。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics