spring 多个定时器

来源:互联网 发布:淘宝网货到付款女装 编辑:程序博客网 时间:2024/05/22 10:36

首先需要在 xml 中配置 

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
        <property name="triggers"> 
             <list> 
                 <ref local="TestTrigger" />  <!-- 定义多个定时器 -->
                 <ref local="WestTrigger" /> 
            </list> 
         </property> 
     </bean>
      
<!--      第二个定时器   -->
    <bean id="WestTrigger2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
         <property name="targetObject">  
             <bean class="com.Test"></bean>
         </property>
         <property name="concurrent" value="true"/>  
         <property name="targetMethod" value="springEst" /> <!-- 需要执行的方法 -->  
     </bean>  
<!--      配置触发器0  --> 
     <bean id="WestTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
         <property name="jobDetail">  
             <ref bean="WestTrigger2"/> <!-- 触发器触发的 执行定时任务的bean -->  
         </property>  
         <property name="cronExpression">  
           <!--  每隔5秒执行一次 --> 
             <value>0/5 * * * * ?</value>  
        </property>  
     </bean>
    
<!--      第一个定时器  -->
    <bean id="TestTrigger1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
         <property name="targetObject">  
             <bean class="com.Test"></bean>
         </property>
         <property name="concurrent" value="true"/>  
         <property name="targetMethod" value="springTest" /> <!-- 需要执行的方法  -->
          
     </bean>  
<!--      配置触发器0   -->
     <bean id="TestTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
         <property name="jobDetail">  
             <ref bean="TestTrigger1"/> <!-- 触发器触发的 执行定时任务的bean    -->
         </property>  
         <property name="cronExpression">  
            <!--  每隔6秒执行一次 --> 
             <value>0/6 * * * * ?</value>  
        </property>  
     </bean>

--------------------------------------------------------------------------------------------------------------------------------------

也可以写成这样

 

<!--      定义我们要运行的类,可以使用注入定制一些参数   -->
     <bean id=" TestTime" class="com.Test"> 
         <property name="para" value="Spring定时器测试V1" /> 
     </bean>
 
<!--     引用,配置要运行的方法   -->
     <bean id="WestTrigger2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
        <property name="targetObject"> 
             <ref bean="TestTime" /> 
        </property> 
        <property name="concurrent" value="true"/>  <!-- 是否并发执行 一次没完下一个不开始  -->
        <property name="targetMethod" value="springEst" /> <!--  需要执行的方法    -->
     </bean>
      
      
      
 <!--     引用,定制调用间隔,具体时间配置的正则,请阅读  -->
     <bean id="WestTrigger"  class="org.springframework.scheduling.quartz.CronTriggerBean">
         <property name="jobDetail"> 
             <ref bean="WestTrigger2" /> 
         </property>
          
         <property name="cronExpression"> 
             <value>0/6 * * * * ?</value> 
         </property>
     </bean>


    <bean id="TestTrigger1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
        <property name="targetObject"> 
             <ref bean="TestTime" /> 
        </property> 
        <property name="concurrent" value="true"/>  <!-- 是否并发执行 一次没完下一个不开始  -->
        <property name="targetMethod" value="springTest" /><!--  需要执行的方法    -->
     </bean>
      
      
     <bean id="TestTrigger"  class="org.springframework.scheduling.quartz.CronTriggerBean">
      
         <property name="jobDetail"> 
             <ref bean="TestTrigger1" /> 
         </property>
          
         <property name="cronExpression"> 
             <value>0/5 * * * * ?</value> 
         </property>
     </bean>

----------------------------------------------------------------------------------------------------------------------------------

java  类

 

/**
 * spring 定时器测试
 * @param request
 * @param response
 */
public void springTest()  {
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
 System.err.println(format.format(new Date())+"============================");
  }

public void springEst()  {
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
 System.err.println(format.format(new Date())+"-----------------------------");
  }

 

----------------------------------------------------------------------------------------------------------------------------------

定时器时间设置

秒 0-59 , - * /

分 0-59 , - * /

小时 0-23 , - * /

日期 1-31 , - * ? / LW 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 ? 3WED" 每年三月的星期三的下午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 ? * 6L2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发

"0 15 10 ? *6#3" 每月的第三个星期五上午10:15触发


 

 

0 0
原创粉丝点击