- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <!--起動(dòng)Bean-->
- <bean id="z" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
- <list>
-
- <ref bean="cronReportTrigger"/>
- </list>
- </property>
- </bean>
- <!--實(shí)際的工作Bean-->
- <bean id="courseService" class="com.spring.helloworld.CourseService"></bean>
- <!--jobBean用于設(shè)定啟動(dòng)時(shí)運(yùn)用的Bean與方法-->
- <bean id="scheduledReportJobDetail"
- class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <property name="targetObject">
- <ref bean="courseService"/>
- </property>
- <property name="targetMethod">
- <value>sendCourseEnrollmentReport</value>
- </property>
- </bean>
- <!--定時(shí)器設(shè)定起動(dòng)頻率&啟動(dòng)時(shí)間我設(shè)的是每5秒起動(dòng)一次 (0 0 4 * * ?每日四點(diǎn)起動(dòng)....)-->
- <bean id="cronReportTrigger"
- class="org.springframework.scheduling.quartz.CronTriggerBean">
- <property name="jobDetail"><ref bean="scheduledReportJobDetail"/>
- </property>
- <property name="cronExpression"><value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
- </property>
- </bean>
-
- </beans>
- package com.spring.helloworld;
-
-
- import java.io.FileNotFoundException;
-
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.BeanFactory;
- import org.springframework.beans.factory.xml.XmlBeanFactory;
- import org.springframework.core.io.FileSystemResource;
-
-
- import com.spring.hellow.LogInit;
- import com.spring.hellow.QuestException;
-
-
- public class TaskApp {
-
- public static void main(String[] args) throws BeansException, FileNotFoundException, QuestException, InterruptedException {
- new LogInit("WEB-INF/classes/com/spring/helloworld/log4j.properties");
- BeanFactory factory = new XmlBeanFactory(new FileSystemResource(
- "WEB-INF/classes/" +
- "com/spring/helloworld/" +
- "helloworld.xml"));
- factory.getBean("z");
-
-
- }
-
-
- }
- 附:cronExpression配置說明
字段 |
|
允許值 |
|
允許的特殊字符 |
秒 |
|
0-59 |
|
, - * / |
分 |
|
0-59 |
|
, - * / |
小時(shí) |
|
0-23 |
|
, - * / |
日期 |
|
1-31 |
|
, - * ? / L W C |
月份 |
|
1-12 或者 JAN-DEC |
|
, - * / |
星期 |
|
1-7 或者 SUN-SAT |
|
, - * ? / L C # |
年(可選) |
|
留空, 1970-2099 |
|
, - * / |
字段 |
|
允許值 |
|
允許的特殊字符 |
秒
|
|
0-59
|
|
, - * /
|
分
|
|
0-59
|
|
, - * /
|
小時(shí)
|
|
0-23
|
|
, - * /
|
日期
|
|
1-31
|
|
, - * ? / L W C
|
月份
|
|
1-12 或者 JAN-DEC
|
|
, - * /
|
星期
|
|
1-7 或者 SUN-SAT
|
|
, - * ? / L C #
|
年(可選)
|
|
留空, 1970-2099
|
|
, - * /
|
The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".
“*”字符被用來指定所有的值。如:”*“在分鐘的字段域里表示“每分鐘”。
The
'?' character is allowed for the day-of-month and day-of-week fields.
It is used to specify 'no specific value'. This is useful when you need
to specify something in one of the two fileds, but not the other. See
the examples below for clarification.
“?”字符只在日期域和星期域中使用。它被用來指定“非明確的值”。當(dāng)你需要通過在這兩個(gè)域中的一個(gè)來指定一些東西的時(shí)候,它是有用的??聪旅娴睦幽憔蜁?huì)明白。
月份中的日期和星期中的日期這兩個(gè)元素時(shí)互斥的一起應(yīng)該通過設(shè)置一個(gè)問號(hào)(?)來表明不想設(shè)置那個(gè)字段
The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".
“-”字符被用來指定一個(gè)范圍。如:“10-12”在小時(shí)域意味著“10點(diǎn)、11點(diǎn)、12點(diǎn)”。
The
',' character is used to specify additional values. For example
"MON,WED,FRI" in the day-of-week field means "the days Monday,
Wednesday, and Friday".
“,”字符被用來指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”.
The
'/' character is used to specify increments. For example "0/15" in the
seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the
seconds field means "the seconds 5, 20, 35, and 50". Specifying '*'
before the '/' is equivalent to specifying 0 is the value to start
with. Essentially, for each field in the expression, there is a set of
numbers that can be turned on or off. For seconds and minutes, the
numbers range from 0 to 59. For hours 0 to 23, for days of the month 0
to 31, and for months 1 to 12. The "/" character simply helps you turn
on every "nth" value in the given set. Thus "7/6" in the month field
only turns on month "7", it does NOT mean every 6th month, please note
that subtlety.
The 'L' character is allowed for the
day-of-month and day-of-week fields. This character is short-hand for
"last", but it has different meaning in each of the two fields. For
example, the value "L" in the day-of-month field means "the last day of
the month" - day 31 for January, day 28 for February on non-leap years.
If used in the day-of-week field by itself, it simply means "7" or
"SAT". But if used in the day-of-week field after another value, it
means "the last xxx day of the month" - for example "6L" means "the
last friday of the month". When using the 'L' option, it is important
not to specify lists, or ranges of values, as you'll get confusing
results.
L是‘last’的省略寫法可以表示day-of-month和day-of-week域,但在兩個(gè)字段中的意思不同,例如day-of-month域中表示一個(gè)月的最后一天,
如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上數(shù)字,它表示一個(gè)月的最后幾天,例如‘6L’就表示一個(gè)月的最后一個(gè)
星期五,
The
'W' character is allowed for the day-of-month field. This character is
used to specify the weekday (Monday-Friday) nearest the given day. As
an example, if you were to specify "15W" as the value for the
day-of-month field, the meaning is: "the nearest weekday to the 15th of
the month". So if the 15th is a Saturday, the trigger will fire on
Friday the 14th. If the 15th is a Sunday, the trigger will fire on
Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday
the 15th. However if you specify "1W" as the value for day-of-month,
and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as
it will not 'jump' over the boundary of a month's days. The 'W'
character can only be specified when the day-of-month is a single day,
not a range or list of days
.
The 'L' and 'W' characters can
also be combined for the day-of-month expression to yield 'LW', which
translates to "last weekday of the month".
The '#' character
is allowed for the day-of-week field. This character is used to specify
"the nth" XXX day of the month. For example, the value of "6#3" in the
day-of-week field means the third Friday of the month (day 6 = Friday
and "#3" = the 3rd one in the month). Other examples: "2#1" = the first
Monday of the month and "4#5" = the fifth Wednesday of the month. Note
that if you specify "#5" and there is not 5 of the given day-of-week in
the month, then no firing will occur that month.
The 'C'
character is allowed for the day-of-month and day-of-week fields. This
character is short-hand for "calendar". This means values are
calculated against the associated calendar, if any. If no calendar is
associated, then it is equivalent to having an all-inclusive calendar.
A value of "5C" in the day-of-month field means "the first day included
by the calendar on or after the 5th". A value of "1C" in the
day-of-week field means "the first day included by the calendar on or
after sunday".
關(guān)于cronExpression的介紹:
字段 允許值 允許的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小時(shí) 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可選) 留空, 1970-2099 , - * /
表達(dá)式意義
"0 0 12 * * ?" 每天中午12點(diǎn)觸發(fā)
"0 15 10 ? * *" 每天上午10:15觸發(fā)
"0 15 10 * * ?" 每天上午10:15觸發(fā)
"0 15 10 * * ? *" 每天上午10:15觸發(fā)
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發(fā)
"0 * 14 * * ?" 在每天下午2點(diǎn)到下午2:59期間的每1分鐘觸發(fā)
"0 0/5 14 * * ?" 在每天下午2點(diǎn)到下午2:55期間的每5分鐘觸發(fā)
"0 0/5 14,18 * * ?" 在每天下午2點(diǎn)到2:55期間和下午6點(diǎn)到6:55期間的每5分鐘觸發(fā)
"0 0-5 14 * * ?" 在每天下午2點(diǎn)到下午2:05期間的每1分鐘觸發(fā)
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發(fā)
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發(fā)
"0 15 10 15 * ?" 每月15日上午10:15觸發(fā)
"0 15 10 L * ?" 每月最后一日的上午10:15觸發(fā)
"0 15 10 ? * 6L" 每月的最后一個(gè)星期五上午10:15觸發(fā)
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個(gè)星期五上午10:15觸發(fā)
"0 15 10 ? * 6#3" 每月的第三個(gè)星期五上午10:15觸發(fā)
每天早上6點(diǎn)
0 6 * * *
每兩個(gè)小時(shí)
0 */2 * * *
晚上11點(diǎn)到早上8點(diǎn)之間每兩個(gè)小時(shí),早上八點(diǎn)
0 23-7/2,8 * * *
每個(gè)月的4號(hào)和每個(gè)禮拜的禮拜一到禮拜三的早上11點(diǎn)
0 11 4 * 1-3
1月1日早上4點(diǎn)
0 4 1 1 *
quartz的高級(jí)特性不僅如此
1 數(shù)據(jù)庫存儲(chǔ)
2 集群支持
3 數(shù)據(jù)庫持久化任務(wù),trigger
4 trigger 的停止,運(yùn)行
5 任務(wù)的任意添加
6 比corntrigger 更詳盡的任務(wù)安排
7 線程的內(nèi)部數(shù)據(jù)交換