quartz 的简单应用

来源:互联网 发布:淘宝人工客服 编辑:程序博客网 时间:2024/05/21 00:55

今天看个一下quartz,感觉用起来还是挺简单的,下面是一个简单的示例。

1、JavaSE

Job.java

package demo;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class MyJob implements Job{public void execute(JobExecutionContext context) throws JobExecutionException {System.out.println(1);}}
Test.java
package demo;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SimpleTrigger;import org.quartz.impl.StdSchedulerFactory;public class Test {public static void main(String[] args) {Test test = new Test();  test.startShedule();}protected void startShedule() {try {//调度器Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();//执行类(工作类)JobDetail detail = new JobDetail("myJob", Scheduler.DEFAULT_GROUP, MyJob.class);//触发器SimpleTrigger trigger = new SimpleTrigger("myTrigger",Scheduler.DEFAULT_GROUP,10,2000);scheduler.scheduleJob(detail, trigger);scheduler.start();} catch (SchedulerException e) {e.printStackTrace();}}}
2、与spring整合

Scheduler.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="quartzJob" class="demo.SpringJob"></bean><!-- 要调用的对象和方法 --><bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="quartzJob"/> </property> <property name="targetMethod"> <value>job</value> </property></bean><!-- 定义触发时间 --><bean id="dotime" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail"><ref bean="jobtask"/></property><property name="cronExpression">             <value>0/2 * * * * ?</value><!-- 2s/次 -->        </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>

SpringJob.java
package demo;public class SpringJob {public void job() {System.out.println("job...");}}
SpringJobTest.java
package demo;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class SpringJobTest {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("config//Scheduler.xml");}}

时间的配置:

时间配置:
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /

示例:
"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 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 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
"0 6 * * *"  每天早上6点
"0 */2 * * *"  没2小时触发一次
"0 23-7/2,8 * * *" 晚上11点到早上8点之间每两个小时,早上八点
"0 11 4 * 1-3" 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 4 1 1 * 1月1日早上4点