Spring4 多种定时器详解

来源:互联网 发布:淘宝介入举证怎么办 编辑:程序博客网 时间:2024/06/08 11:30

转载自:http://blog.csdn.net/u010994277/article/details/43835945

注意:spring4已经没有org.springframework.scheduling.timer.ScheduledTimerTask这个类,所以不能用spring3以前的timerTask方法。现spring4定时器方法推荐一下两只方法:(需要单独导入quartz包,只能是1.8.+)

spring代码如下:

[html] view plaincopy
  1. <span style="white-space:pre">    </span><!-- 方式1 -->  
  2.     <bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
  3.         <property name="jobClass" value="com.spring.task.TaskOne" />  
  4.         <property name="jobDataAsMap">  
  5.             <map>  
  6.                 <entry key="timeout" value="5" />  
  7.             </map>  
  8.         </property>  
  9.     </bean>  
  10.     <bean id="cronTrigger"  
  11.         class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
  12.         <property name="jobDetail" ref="exampleJob" />  
  13.         <!-- run every morning at 6 AM -->  
  14.         <!-- <property name="cronExpression" value="0 0 6 * * ?" /> -->  
  15.         <!-- <property name="cronExpression" value="0 0/1 * * * ?" /> --> <!-- 每分钟 -->  
  16.         <property name="cronExpression" value="0/2 * * * * ?" /> <!-- 每秒 -->  
  17.     </bean>  
  18.   
  19.     <!-- 方式2 -->  
  20.     <bean id="exampleBusinessObject" class="com.spring.task.TaskTwo" />  
  21.     <bean id="jobDetail"  
  22.         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
  23.         <property name="targetObject" ref="exampleBusinessObject" />  
  24.         <property name="targetMethod" value="doIt" />  
  25.         <property name="concurrent" value="false" />  
  26.     </bean>  
  27.     <bean id="simpleTrigger"  
  28.         class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">  
  29.         <!-- see the example of method invoking job above -->  
  30.         <property name="jobDetail" ref="jobDetail" />  
  31.         <!-- 10 seconds -->  
  32.         <property name="startDelay" value="5000" />  
  33.         <!-- repeat every 50 seconds -->  
  34.         <property name="repeatInterval" value="3000" />  
  35.     </bean>  
  36.   
  37.     <!-- 总调度用于启动Spring定时器 -->  
  38.     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  39.         <property name="triggers">  
  40.             <list>  
  41.                 <ref bean="cronTrigger" />  
  42.                 <ref bean="simpleTrigger" />  
  43.             </list>  
  44.         </property>  
  45.     </bean>  

JAVA代码如下(方式1):

[java] view plaincopy
  1. package com.spring.task;  
  2.   
  3. import org.apache.log4j.Logger;  
  4. import org.quartz.JobExecutionContext;  
  5. import org.quartz.JobExecutionException;  
  6. import org.springframework.scheduling.quartz.QuartzJobBean;  
  7.   
  8. public class TaskOne extends QuartzJobBean {  
  9.       
  10.     protected static final Logger log=Logger.getLogger(TaskOne.class);  
  11.       
  12.     private int timeout;  
  13.   
  14.     /** 
  15.      * Setter called after the ExampleJob is instantiated 
  16.      * with the value from the JobDetailBean (5) 
  17.      */  
  18.     public void setTimeout(int timeout) {  
  19.         this.timeout = timeout;  
  20.     }  
  21.       
  22.     @Override  
  23.     protected void executeInternal(JobExecutionContext arg0)  
  24.             throws JobExecutionException {  
  25.         // TODO Auto-generated method stub  
  26.         log.info("-----定时任务执行-----");  
  27.           
  28.     }  
  29.   
  30.       
  31. }  


JAVA代码如下(方式2):


[java] view plaincopy
  1. package com.spring.task;  
  2.   
  3. import org.apache.log4j.Logger;  
  4.   
  5. public class TaskTwo {  
  6.     protected static final Logger log=Logger.getLogger(TaskTwo.class);  
  7.       
  8.     public void doIt(){  
  9.         log.info("-----定时任务执行-----");  
  10.           
  11.     }  
  12. }  


0 0