Spring联姻Quartz实现作业调度


这里用的是Spring-2.x和Quartz-1.x

里面涉及到的RecFileQuartz、MessageSendQuartz等类,都是普通的Java类

其中<targetMethod>属性值就是RecFileQuartz、MessageSendQuartz类中的方法

  1. <bean id="recfileQuartz" class="com.ecpay.cus.quartz.RecFileQuartz">  
  2.         <property name="pbcDao" ref="pbcDao" />  
  3.         <property name="nauDao" ref="nauDao" />  
  4.     </bean>  
  5.     <bean id="messageSendQuartz" class="com.ecpay.cus.quartz.MessageSendQuartz">  
  6.         <property name="jfbManager" ref="jfbManager"/>  
  7.     </bean>  
  8.   
  9.   
  10.     <!-- Spring作业调度 -->  
  11.     <!-- 0 0/10 9-23 * * ? : 每天09:00-23:00之间每10分钟触发一次 -->  
  12.     <!-- 0 */2 * * * ?     : 02分钟触发一次 -->  
  13.     <!-- 0 30 0 * * ?      : 每天00:30触发 -->  
  14.     <!-- 0 0 1 * * ?       : 每天01:00触发 -->  
  15.     <!-- 0 0 0 1 * ?       : 每月01号零点触发 -->  
  16.     <!-- autoStartup='true':SchedulerFactoryBean在初始化后是否马上启动Scheduler,默认为true。若设置为false,则需手工启动Scheduler -->  
  17.     <!-- concurrent='false':false为不允许任务并发执行,即第二个job将不会在第一个job完成之前开始执行.默认情况下,jobs是在并行的方式下运行的 -->  
  18.     <bean id="quartzJobFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  19.         <property name="triggers">  
  20.             <list>  
  21.                 <ref bean="genCustomizeRelationTrigger"/>  
  22.                 <ref bean="sendInfoTrigger"/>  
  23.             </list>  
  24.         </property>  
  25.         <property name="autoStartup" value="true"/>  
  26.     </bean>  
  27.       
  28.     <bean id="genCustomizeRelationTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  29.         <property name="jobDetail" ref="genCustomizeRelationJobDetail" />  
  30.         <property name="cronExpression" value="0 30 0 * * ?"/>  
  31.     </bean>  
  32.     <bean id="genCustomizeRelationJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
  33.         <property name="targetObject" ref="recfileQuartz" />  
  34.         <property name="targetMethod" value="genRecFileRelation" />  
  35.         <property name="concurrent" value="false" />  
  36.     </bean>  
  37.   
  38.     <bean id="sendInfoTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  39.         <property name="jobDetail" ref="sendInfoDetail"/>  
  40.         <property name="cronExpression" value="0 */10 * * * ?" />  
  41.     </bean>  
  42.     <bean id="sendInfoDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
  43.         <property name="targetObject" ref="messageSendQuartz" />  
  44.         <property name="targetMethod" value="executeSend" />  
  45.         <property name="concurrent" value="false" />  
  46.     </bean>  

下面是MessageSendQuartz.java

  1. package com.ecpay.cus.quartz;  
  2.   
  3. import com.ecpay.cus.service.JFBBusinessManager;  
  4.   
  5. /** 
  6.  * 信息推送 
  7.  * @author 玄玉<http://blog.csdn.net/jadyer> 
  8.  */  
  9. public class MessageSendQuartz {  
  10.     private JFBBusinessManager jfbManager;  
  11.     public void setJfbManager(JFBBusinessManager jfbManager) {  
  12.         this.jfbManager = jfbManager;  
  13.     }  
  14.   
  15.     /** 
  16.      * 定时执行的方法 
  17.      */  
  18.     public void executeSend() throws Exception {  
  19.         System.out.println("恭喜您:信息推送任务启动了");  
  20.     }  
  21. }  

下面是RecFileQuartz.java

  1. package com.ecpay.cus.quartz;  
  2.   
  3. import org.springframework.transaction.annotation.Transactional;  
  4.   
  5. import com.ecpay.cus.dao.NotActiveUserDAO;  
  6. import com.ecpay.cus.dao.PayBusinessCustomizeDAO;  
  7.   
  8. /** 
  9.  * 业务定制对账文件之作业调度类 
  10.  * @author 玄玉<http://blog.csdn.net/jadyer> 
  11.  * @create May 4, 2012 12:50:28 PM 
  12.  */  
  13. @Transactional  
  14. public class RecFileQuartz {  
  15.     private PayBusinessCustomizeDAO pbcDao;  
  16.     private NotActiveUserDAO nauDao;  
  17.     public void setNauDao(NotActiveUserDAO nauDao) {  
  18.         this.nauDao = nauDao;  
  19.     }  
  20.     public void setPbcDao(PayBusinessCustomizeDAO pbcDao) {  
  21.         this.pbcDao = pbcDao;  
  22.     }  
  23.       
  24.     /** 
  25.      * 生成定制关系到数据库 
  26.      */  
  27.     @Transactional  
  28.     public void genRecFileRelation() {  
  29.         System.out.println("恭喜您:Spring定制调度执行了���方法,本行打印的日志就是该方法的第一行代码");  
  30.     }  
  31. }  

相关内容