spring 定时任务

本文介绍如何使用Spring框架整合Quartz实现定时任务。包括创建定时任务类、配置Spring XML文件来定义任务触发规则等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用
步骤一:先写一个类,继承QuartzJobBean类,并重写executeInternal(JobExecutionContext arg0)方法

  
Java代码 复制代码  收藏代码
  1. public class QueryAndUpdateData extends QuartzJobBean{   
  2.      private ChannelQueryService channelQueryService;   
  3.      //....   
  4.      @Override  
  5.     protected void executeInternal(JobExecutionContext arg0)   
  6.             throws JobExecutionException {   
  7.       //重写方法 定时实现的内容   
  8.     }   
  9. }  
public class QueryAndUpdateData extends QuartzJobBean{
     private ChannelQueryService channelQueryService;
     //....
     @Override
	protected void executeInternal(JobExecutionContext arg0)
			throws JobExecutionException {
      //重写方法 定时实现的内容
    }
}

引用
步骤二:写spring配置文件
Java代码 复制代码  收藏代码
  1. <!-- 第一步 声明一个定时任务,注意不是直接声明,而是声明一个JobDetailBean,通过jobClass属性设置一个定时对象 -->   
  2.      <bean id="quartzClock"    
  3. class="org.springframework.scheduling.quartz.JobDetailBean">   
  4.         <property name="jobClass">            <value>com.cm.task.action.QueryAndUpdateData</value>   
  5.         </property>   
  6.         <property name="jobDataAsMap">    
  7.            <map>    
  8.              <entry key="channelTaskService">    
  9.                  <ref bean="channelTaskService" />    
  10.              </entry>    
  11.            </map>    
  12.         </property>    
  13.     </bean>   
  14. <!-- 第二步 调度定时任务 -->   
  15.     <bean id="quartzClockTask" class="org.springframework.scheduling.quartz.SimpleTriggerBean">   
  16.         <property name="jobDetail">   
  17.            <ref bean="quartzClock"/>   
  18.         </property>   
  19.         <property name="startDelay">   
  20.           <!-- 这里是服务启动后延时多少时间,开始计时任务,单位ms -->   
  21.            <value>5000</value>   
  22.         </property>   
  23.         <property name="repeatInterval">   
  24.          <!-- 这里是每隔多长时间就进行一次计时任务,单位ms -->   
  25.            <value>5000</value>   
  26.        </property>   
  27.     </bean>   
  28.        
  29.     <bean id="cronQuartzClock" class="org.springframework.scheduling.quartz.CronTriggerBean">   
  30.        <property name="jobDetail">   
  31.           <ref bean="quartzClock"></ref>   
  32.        </property>   
  33.        <property name="cronExpression">   
  34.          <value>0 27 16 1 * ?</value>     
  35.        </property>   
  36.    </bean>   
  37.    <!--  0 0 0 1 * ?    
  38.       1.秒(0-59)   
  39.   
  40.       2.分钟(0-59)   
  41.   
  42.       3.小时(0-23)   
  43.   
  44.       4.月份中的是期(1-31)   
  45.   
  46.       5.月份(1-12或SUN-DEC)   
  47.   
  48.       6.星期中的日期(1-7或SUN-SAT)   
  49.   
  50.       7.年份(1970-2099)    
  51.   
  52.      例子:   
  53.   
  54.       0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点   
  55.   
  56.       0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟   
  57.   
  58.       30 0 0 1 1 ? 2012 在201211日午夜过30秒时   
  59.   
  60.       0 0 8-5 ? * MON-FRI 每个工作日的工作时间   
  61.     -->     
  62.         
  63.  <!--第三步 启动定时任务,注意这里的ref bean -->     
  64.    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">   
  65.       <property name="triggers">   
  66.         <list>   
  67.           <ref bean="cronQuartzClock"></ref>   
  68.         </list>   
  69.      </property>   
  70.   </bean>  
<!-- 第一步 声明一个定时任务,注意不是直接声明,而是声明一个JobDetailBean,通过jobClass属性设置一个定时对象 -->
     <bean id="quartzClock" 
class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass">            <value>com.cm.task.action.QueryAndUpdateData</value>
        </property>
        <property name="jobDataAsMap"> 
           <map> 
             <entry key="channelTaskService"> 
                 <ref bean="channelTaskService" /> 
             </entry> 
           </map> 
        </property> 
    </bean>
<!-- 第二步 调度定时任务 -->
	<bean id="quartzClockTask" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
        <property name="jobDetail">
           <ref bean="quartzClock"/>
        </property>
        <property name="startDelay">
          <!-- 这里是服务启动后延时多少时间,开始计时任务,单位ms -->
           <value>5000</value>
        </property>
        <property name="repeatInterval">
         <!-- 这里是每隔多长时间就进行一次计时任务,单位ms -->
           <value>5000</value>
       </property>
    </bean>
    
    <bean id="cronQuartzClock" class="org.springframework.scheduling.quartz.CronTriggerBean">
       <property name="jobDetail">
          <ref bean="quartzClock"></ref>
       </property>
       <property name="cronExpression">
    	 <value>0 27 16 1 * ?</value>  
       </property>
   </bean>
   <!--  0 0 0 1 * ? 
      1.秒(0-59)

      2.分钟(0-59)

      3.小时(0-23)

      4.月份中的是期(1-31)

      5.月份(1-12或SUN-DEC)

      6.星期中的日期(1-7或SUN-SAT)

      7.年份(1970-2099) 

     例子:

      0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点

      0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟

      30 0 0 1 1 ? 2012 在2012年1月1日午夜过30秒时

      0 0 8-5 ? * MON-FRI 每个工作日的工作时间
    -->  
     
 <!--第三步 启动定时任务,注意这里的ref bean -->  
   <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      <property name="triggers">
        <list>
          <ref bean="cronQuartzClock"></ref>
        </list>
     </property>
  </bean>

所需要的jar包:
spring.jar;quartz-all-1.6.0.jar;commons-collections.jar;可能还要commons-*.jar
spring多任务定时配置文件:
Java代码 复制代码  收藏代码
  1. <!-- 第一个任务的配置 -->   
  2. <bean id="quartzClock"    
  3. class="org.springframework.scheduling.quartz.JobDetailBean">   
  4.         <property name="jobClass">   
  5.             <value>com.cm.task.action.QueryAndAddTask</value>   
  6.         </property>   
  7.         <property name="jobDataAsMap">    
  8.            <map>    
  9.              <entry key="channelTaskService">    
  10.                  <ref bean="channelTaskService" />    
  11.              </entry>     
  12.           </map>    
  13.         </property>    
  14.     </bean>   
  15.     <bean id="quartzClockTask"    
  16. class="org.springframework.scheduling.quartz.SimpleTriggerBean">   
  17.         <property name="jobDetail">   
  18.            <ref bean="quartzClock"/>   
  19.         </property>   
  20.         <property name="startDelay">   
  21.            <value>5000</value>   
  22.         </property>   
  23.         <property name="repeatInterval">   
  24.            <value>5000</value>   
  25.        </property>   
  26.     </bean>       
  27.     <bean id="cronQuartzClock"    
  28. class="org.springframework.scheduling.quartz.CronTriggerBean">   
  29.        <property name="jobDetail">   
  30.           <ref bean="quartzClock"></ref>   
  31.        </property>   
  32.        <property name="cronExpression">   
  33.             <value>0 27 16 1 * ?</value>     
  34.        </property>   
  35.    </bean>   
  36.   
  37. <!-- 第一个任务的配置 -->   
  38.      <bean id="offNetClock"    
  39. class="org.springframework.scheduling.quartz.JobDetailBean">   
  40.         <property name="jobClass">   
  41.             <value>com.cm.task.action.QueryAndUpdateData</value>   
  42.         </property>   
  43.         <property name="jobDataAsMap">    
  44.            <map>    
  45.               <entry key="channelTaskService">    
  46.                  <ref bean="channelTaskService" />    
  47.              </entry>     
  48.           </map>    
  49.         </property>    
  50.     </bean>   
  51.     <bean id="offNetClockTask"    
  52. class="org.springframework.scheduling.quartz.SimpleTriggerBean">   
  53.         <property name="jobDetail">   
  54.            <ref bean="offNetClock"/>   
  55.         </property>   
  56.         <property name="startDelay">   
  57.            <value>5000</value>   
  58.         </property>   
  59.         <property name="repeatInterval">   
  60.            <value>5000</value>   
  61.        </property>   
  62.     </bean>       
  63.     <bean id="cronOffNetClock"    
  64. class="org.springframework.scheduling.quartz.CronTriggerBean">   
  65.        <property name="jobDetail">   
  66.           <ref bean="offNetClock"></ref>   
  67.        </property>   
  68.        <property name="cronExpression">   
  69.             <value>0 43 16 * * ?</value>     
  70.        </property>   
  71.    </bean>   
  72.         
  73. <!-- 调用前面所提到的两个任务 -->      
  74.    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">   
  75.       <property name="triggers">   
  76.         <list>   
  77.           <ref bean="cronQuartzClock"></ref>   
  78.           <ref bean="cronOffNetClock"></ref>   
  79.         </list>   
  80.      </property>   
  81.   </bean>  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值