spring Quartz用法,定时任务,job

 转自:http://blog.csdn.net/xiongwenhua365/article/details/6526510

 

第一步:DailyTask.java

view plain copy to clipboard print ?
  1. package com.springinaction.quartz;  
  2.   
  3. import org.springframework.scheduling.quartz.QuartzJobBean;  
  4.   
  5. public class DailyTask extends QuartzJobBean  
  6. {  
  7.     private HelloWorld helloWorld;  
  8.       
  9.     public HelloWorld getHelloWorld()  
  10.     {  
  11.         return helloWorld;  
  12.     }  
  13.   
  14.   
  15.     public void setHelloWorld(HelloWorld helloWorld)  
  16.     {  
  17.         this.helloWorld = helloWorld;  
  18.     }  
  19.   
  20.     protected void executeInternal(org.quartz.JobExecutionContext context) throws org.quartz.JobExecutionException   
  21.     {  
  22.         this.helloWorld.sayHello();  
  23.     }  
  24. }  

package com.springinaction.quartz; import org.springframework.scheduling.quartz.QuartzJobBean; public class DailyTask extends QuartzJobBean { private HelloWorld helloWorld; public HelloWorld getHelloWorld() { return helloWorld; } public void setHelloWorld(HelloWorld helloWorld) { this.helloWorld = helloWorld; } protected void executeInternal(org.quartz.JobExecutionContext context) throws org.quartz.JobExecutionException { this.helloWorld.sayHello(); } }

第二步:HelloWorld.java

 

view plain copy to clipboard print ?
  1. package com.springinaction.quartz;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Calendar;  
  5. import java.util.Date;  
  6.   
  7. public class HelloWorld  
  8. {  
  9.     public void sayHello()  
  10.     {  
  11.         Date now = Calendar.getInstance().getTime();  
  12.         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");  
  13.         System.out.println("Hello World! " + simpleDateFormat.format(now));  
  14.     }  
  15. }  

package com.springinaction.quartz; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class HelloWorld { public void sayHello() { Date now = Calendar.getInstance().getTime(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println("Hello World! " + simpleDateFormat.format(now)); } }

第三步:Spring的配置文件springquartz.xml

view plain copy to clipboard print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.          xmlns:aop="http://www.springframework.org/schema/aop"  
  6.          xmlns:tx="http://www.springframework.org/schema/tx"  
  7.          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  8.            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd  
  9.            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">  
  10.   
  11.     <bean id="helloWorld" class="com.springinaction.quartz.HelloWorld" />  
  12.     <bean id="dailyRantEmailJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
  13.         <property name="jobClass" value="com.springinaction.quartz.DailyTask"></property>  
  14.         <property name="jobDataAsMap">  
  15.             <map>  
  16.                 <entry key="helloWorld" value-ref="helloWorld"></entry>  
  17.             </map>  
  18.         </property>  
  19.     </bean>  
  20.       
  21.     <bean id="cronEmailTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  22.         <property name="jobDetail" ref="dailyRantEmailJob" />  
  23.         <property name="cronExpression" value="0-59 0-59 0-23 * * ?" />  
  24.     </bean>  
  25.       
  26.     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  27.         <property name="triggers">  
  28.             <list>  
  29.                 <ref bean="cronEmailTrigger"/>  
  30.             </list>  
  31.         </property>  
  32.     </bean>  
  33. </beans>  

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean id="helloWorld" class="com.springinaction.quartz.HelloWorld" /> <bean id="dailyRantEmailJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.springinaction.quartz.DailyTask"></property> <property name="jobDataAsMap"> <map> <entry key="helloWorld" value-ref="helloWorld"></entry> </map> </property> </bean> <bean id="cronEmailTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="dailyRantEmailJob" /> <property name="cronExpression" value="0-59 0-59 0-23 * * ?" /> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronEmailTrigger"/> </list> </property> </bean> </beans>

第四步:启动Test.java

view plain copy to clipboard print ?
  1. package com.springinaction.quartz;  
  2.   
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.   
  5. public class Test  
  6. {  
  7.     public static void main(String[] args)  
  8.     {  
  9.         new ClassPathXmlApplicationContext("springquartz.xml");  
  10.     }  
  11. }  

 

 附:cronExpression配置说明

字段   允许值   允许的特殊字符
秒    0-59    , - * /
分    0-59    , - * /
小时    0-23    , - * /
日期    1-31    , - * ? / L W C
月份    1-12 或者 JAN-DEC    , - * /
星期    1-7 或者 SUN-SAT    , - * ? / L C #
年(可选)    留空, 1970-2099    , - * /


这里特殊字符说明:

1.逗号[,]的作用,用于分隔字符,如秒1,10,59 这是在1秒、10秒、59秒时触发。

2.横线[-]的作用,用于表示多少至多少,如秒1-20 这是在1到20之间每秒都触发。

3.星号

的作用,用于表示忽略本项,如秒* 这样在整个表达式中将不把秒做为条件。
4.斜线[/]的作用,用于表示倍数累加,如秒5/15 这是在5,20,35,50时触发。

5.问号[?],只能用在日期和星期,因为两者之间有一个相同性,例如星期一,在日期表达中是20号,这样在进行cron计算时会有问题,因此可以使用?号,把其中的一个屏蔽掉。例如 * * * ? * 1 表示为每星一触发。

表达式 意义
"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触发


你可能感兴趣的:(spring Quartz用法,定时任务,job)