Quartz可以用來執行任務調度功能,如間隔一定時間調用執行任務。用起來還是蠻方便的。只要將你要調用的類配置到Spring配置文件即可。
在Spring的配置文件中配置Quartz。
1 <!-- 要調用的工作類 --> 2 <bean id="quartzJob" class="com.aisino.projects.supply.task.Quartzjob"></bean> 3 <!-- 定時任務活動生效與失效 --> 4 <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 5 <!-- 調用的類 --> 6 <property name="targetObject"> 7 <ref bean="quartzJob"/> 8 </property> 9 <!-- 調用類中的方法 --> 10 <property name="targetMethod"> 11 <value>Job</value> 12 </property> 13 </bean> 14 <!-- 定義觸發時間 --> 15 <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 16 <property name="jobDetail"> 17 <ref bean="jobtask"/> 18 </property> 19 <!-- cron表達式 --> 20 <property name="cronExpression"> 21 <value>0 1 0 * * ?</value> 22 </property> 23 </bean> 24 <!-- 總管理類 如果將lazy-init='false'那么容器啟動就會執行調度程序 --> 25 <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 26 <property name="triggers"> 27 <list> 28 <ref bean="doTime"/> 29 </list> 30 </property> 31 </bean>
如上圖,在第2行配置要調用的類,第11行配置要調用的方法,第21行配置要調用的時間,即可。
時間的話。這里用的corn表達式。各參數如下:
字段 允許值 允許的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可選) 留空, 1970-2099 , - * /
“?”字符:表示不確定的值
“,”字符:指定數個值
“-”字符:指定一個值的范圍
“/”字符:指定一個值的增加幅度。n/m表示從n開始,每次增加m
“L”字符:用在日表示一個月中的最后一天,用在周表示該月最后一個星期X
“W”字符:指定離給定日期最近的工作日(周一到周五)
“#”字符:表示該月第幾個周X。6#3表示該月第3個周五
所以:上面例子里表示的就是:每天00點01分的時候執行一次Quartzjob類的Job方法。如果需要多個任務調度,只需要重復寫上面4個bean中的第2、3個,然后將觸發時間配置進第4個bean的list里即可。當然前提是你的調度都要存在一個類里~