Spring設定quartzスケジューリングタスク



文章の起源:http://www.cnblogs.com/kay/archive/2007/11/02/947372.html
 
環境バージョン:
spring 4.0.0.RELEASE及び関連Jarカバン
quartz 1.5.2
 
 
SpringにおけるQuartzの配置
 
Quartzは強力な企業レベルのタスクスケジュールの枠組みであり、SpringでQuartzを継承し、簡略化しました.次に、SpringでQuartzをどのように配置するかを見てみます.まず、スケジュールされたクラスを書きます.
 
package com.kay.quartz;

public class QuartzJob {

	public void work() {
		System.out.println("Quartz     !!!");
	}
}
 Springのプロファイル(他のファイルをappication Contact.xmlに追加する必要があります):
 
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<!--        (quartzJob com.kay.quartz.QuartzJob    ) -->
	<bean id="quartzJob" class="com.kay.quartz.QuartzJob"></bean>
	<!--                -->
	<bean id="jobtask"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<!--     (targetObject     ,quartzJob       ) -->
		<property name="targetObject">
			<ref bean="quartzJob" />
		</property>
		<!--        (targetMethod     ,work       ) -->
		<property name="targetMethod">
			<value>work</value>
		</property>
	</bean>
	<!--        -->
	<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<!--          (jobtask     ) -->
		<property name="jobDetail">
			<ref bean="jobtask" />
		</property>
		<!-- cron   ,  10     , 5      -->
		<property name="cronExpression">
			<value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
		</property>
	</bean>
	<!--         lazy-init='false'               -->
	<bean id="startQuertz" lazy-init="false" autowire="no"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<!--             -->
		<property name="triggers">
			<list>
				<ref bean="doTime" />
			</list>
		</property>
	</bean>
</beans>
テストプログラム: 
 
package com.kay.quartz;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainTest {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("Test start.");
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"quartz-config.xml");
		//         startQuertz bean lazy-init   false       
		// context.getBean("startQuertz");
		System.out.print("Test end..");
	}
} 
私たちは4 jのプロファイルをsrcディレクトリに入れて、mainクラスを起動すればいいです. 
 
Cron式には以下の7つのフィールドがあります.
秒(0~59) 
分(0~59) 
時間(0~23) 
日(月または月内日付)(0~31日までですが、あなたの月の日数を考慮してください.)
月(0~11) 
日曜日(日曜日または日曜日)(1~7 1=SUNまたはSUN、MON、TUTE、WED、THU、FRI、SAT) 
 
年(1970-2099) 
 
特殊文字
クロントリガーは一連の特殊文字を利用して、次のように示します.
  • 逆斜線(/)の文字は増分値を表します.例えば、秒フィールドの「5/15」は、5秒目から15秒ごとに1回始まることを表します.
  • 疑問符(?)文字とアルファベットL文字は、月内日付と週内日付フィールドのみで使用できます.疑問符はこのフィールドに具体的な値が含まれていないことを示しています.したがって、月内の日付を指定すると、週内の日付フィールドに「?」を挿入しても良いです.L文字は last の略語.月の日付フィールドに置いて、その月の最後の日に実行する予定です.週間内の日付フィールドにおいて、「L」が単独で存在すると「7」に等しくなります.さもなければ、その月の日付の最後の例を表します.ですから、「0 L」は当月の最後の日曜日に実施するという意味です.
  • 月の日付フィールドの文字(W)は、指定された値に最も近い平日に実行されます.「1 W」を月内日付フィールドに置き、実行を当月の最初の勤務日内にすることを示します.
  • 井号(菗)の文字は、与えられた月の具体的な稼働日の例を指定します.「MON铉2」を週間内の日付フィールドに置き、タスクを当月の第二月曜日に配置することを示します.
  • アスタリスク(*)の文字は、フィールドが任意の可能な値を受け入れることができることを示しています.
  •  
    表現の意味 「0 0 0 12*?」毎日昼12時にトリガします. 「0 15 10?*」は毎日午前10時15分にトリガします. 「0 15 10**」は毎日午前10時15分にトリガします. 「0 15 10***?*」は毎日午前10時15分にトリガされます. 「0 15 10**?2005」2005年の毎日午前10時15分トリガ 「0*14**?」は毎日午後2時から午後2時59分までの1分間にトリガします. 「0/5 14*?」は毎日午後2時から午後2時55分の間に5分間ごとにトリガします. 「0/5 14,18*?」は毎日午後2時から2時55分までと午後6時から6時55分の間に5分間ごとにトリガします. 「0-5 14*?」は毎日午後2時から午後2時05分の間に1分間ごとにトリガします. 「0 10,44 14?3 WED」は毎年3月の水曜日の午後2時10分と2時44分にトリガされます. 「0 15?10?*MON-FRI」は月曜日から金曜日までの午前10時15分にトリガされます. 毎月15日午前10時15分トリガ 毎月最後の日の午前10時15分トリガ 「0 15 10?*6 L」毎月最後の金曜日午前10時15分トリガ 「0 15?10?*6 L 2002-2005」2002年から2005年までの毎月最後の金曜日の午前10時15分にトリガします. 毎月の第三金曜日午前10時15分トリガ 「0 6**」は毎朝6時です.
    「0*/2**」は二時間ごとに
    「0 23-7/2、8**」夜11時から朝8時までの間は2時間毎に朝8時までです.
    「0 11 4*1-3」毎月の4日と毎週の月曜日から水曜日の午前11時です.
    「0 4 1*」1月1日午前4時
     
    以上、仕事は忘れます.