`
liyiye
  • 浏览: 415705 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

整合spring与quartz的任务调用

阅读更多

   quartz可以定时调用用户的任务,可以很好的管理用户的线程,而不用用户操心,用户只要定义好时间和要调用的方法就行。下面看一下如何配置:

 

第一种:调用某个类里面的方法

 

1 applicationContext.xml的配置

 

<!-- 定义要调用的任务的实现类 -->

 

<bean id="testQuartz" class="com.testQuartz">

 </bean>

<!--调用实现类里面的某个方法 -->

<bean id="testSayHello"   class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
     <property name="targetObject">
       <ref bean="testQuartz"/>
     </property>
     <property name="targetMethod">
       <value>sayHello</value>
     </property>
   </bean>

<!--定义调用任务的时间 -->
   <bean id="testSayTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
     <property name="jobDetail">
       <ref bean="testSayHello"/>
     </property>
     <property name="cronExpression">
       <value>0 0 9 * * ?</value>
     </property>
   </bean>

 

<!--管理触发器 -->

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
   <list>

      <ref local="testSayTrigger"/>          
   </list>
  </property>
   </bean> 

2  testQuartz.java 类:

public class testQuartz {

  public String sayHello()
  {

     ..........//调用的方法

   }

}

 

第一种:继承QuartzJobBean类

1 applicationContext.xml的配置

<bean name="testQuartz"  class="org.springframework.scheduling.quartz.JobDetailBean">
     <property name="jobClass">
       <value>com.testQuartz</value>
  </property>
  <property name="jobDataAsMap">
       <map>

          <!--   spring 的依赖注入  -->
          <entry key="userServiceDAO"><ref local="userServiceDAO"/></entry>
         </map>
     </property>
  </bean>

 <!--定义调用的任务的时间 -->

  <bean id="testHelloTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
      <property name="jobDetail">
        <ref bean="testQuartz"/>
      </property>
      <property name="cronExpression">
        <value>0 35 16 * * ?</value>
      </property>
   </bean>

<!-- 触发器的管理-->

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
   <list>

     <ref local="testHelloTrigger"/>          
   </list>
  </property>
   </bean> 

 

testQuartz.java

public class testQuartz extends QuartzJobBean {

private  UserServiceDAO userServiceDAO;
 /**

   
    */
 protected void executeInternal(JobExecutionContext jobExecutionContext)
   throws JobExecutionException {

    。。。。。。。。。。//调用的任务
       }

}

 

总结:

定义调用时间的格式:

 

Field Name    | Mandatory?    | Allowed Values | Allowed Special Characters


Seconds          |  YES |  0-59             |  , - * /

Minutes            |  YES        |  0-59           |  , - *
/


Hours            |  YES           |  0-23             |  , - * /

Day of month  |  YES         |  1-31           |  , - * ?
/ L W C


Month            |  YES           |  1-12 or JAN-DEC   |  , - * /
Day of week | YES | 1-7 or SUN-SAT | , - * ?
/ L C #


Year             |  NO        |  empty, 1970-2099  |  , - * /

至于详细的解释你一看例子就会明白

例子列表如下:
表达式 解释
0 0 12 * * ? 在每天中午12:00触发
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:00至2:59之间每分钟触发一次
0 0/5 14 * * ? 每天在下午2:00至2:59之间每5分钟触发一次
0 0/5 14,18 * * ? 每天在下午2:00至2:59和6:00至6:59之间的每5分钟触发一次
0 0-5 14 * * ? 每天在下午2:00至2:05之间每分钟触发一次
0 10,44 14 ? 3 WED 每三月份的星期三在下午2:00和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, 2003, 2004 and 2005年的每个月的最后一个星期五的上午10:15触发
0 15 10 ? * 6#3 在每个月的第三个星期五的上午10:15触发
0 0 12 1/5 * ? 从每月的第一天起每过5天的中午12:00时触发
0 11 11 11 11 ? 在每个11月11日的上午11:11时触发.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics