spring 定时器

第一种 Java Timer定时


spring配置文件:
<bean id= "reportTimerTask" class ="com.flex.thread.TaskJob"></ bean>(或者在TaskJob类中添加注释:)
<bean id= "scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask" >
            <property name="timerTask" ref="reportTimerTask" />
           <!-- 设置启动延迟 -->
          <property name="delay" >
          <value> 10000</value >
           </property>
         <!-- 后续延迟 -->
             <property name="period" >
             <value> 6000</value >
             </property>
</bean>
      
<bean class="org.springframework.scheduling.timer.TimerFactoryBean" > 
               <property name="scheduledTimerTasks" >    
               <list>< ref bean ="scheduleReportTask"/></ list>
               </property>
</bean>

class类  
 
package com.flex.thread;

import java.util.TimerTask;
public class TaskJob extends TimerTask {

       @Override
       public void run() {

         ...
     }  
}


第二种 Quartz定时器


Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz:
首先我们来写一个被调度的类:
package com.web.quartz;

public class TaskReportJob {

       protected void work() {
            System. out.println("------定时器运行中------" );
      }

}
Spring的配置文件:
<beans>
<!-- 要调用的工作类 -->
<bean id= "quartzJob" class ="com.web.quartz.TaskReportJob" ></bean>
<!-- 定义调用对象和调用对象的方法 -- >
<bean id= "jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" >
    <!-- 调用的类 -->
    <property name = "targetObject" >
        <ref bean ="quartzJob" />
    </property>
    <!-- 调用类中的方法 -- >
    <property name = "targetMethod" >
        <value>work</value >
    </property>
</bean>
<!-- 定义触发时间 -- >
<bean id= "doTime" class ="org.springframework.scheduling.quartz.CronTriggerBean" >
    <property name = "jobDetail" >
        <ref bean ="jobtask" />
    </property>
    <!-- cron 表达式 -- >
    <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>


表达式意义 


"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触发

你可能感兴趣的:(spring,定时器)