歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Spring聯姻Quartz實現作業調度

Spring聯姻Quartz實現作業調度

日期:2017/3/1 10:11:38   编辑:Linux編程

這裡用的是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. <!-- Spring作業調度 -->
  9. <!-- 0 0/10 9-23 * * ? : 每天09:00-23:00之間每10分鐘觸發一次 -->
  10. <!-- 0 */2 * * * ? : 02分鐘觸發一次 -->
  11. <!-- 0 30 0 * * ? : 每天00:30觸發 -->
  12. <!-- 0 0 1 * * ? : 每天01:00觸發 -->
  13. <!-- 0 0 0 1 * ? : 每月01號零點觸發 -->
  14. <!-- autoStartup='true':SchedulerFactoryBean在初始化後是否馬上啟動Scheduler,默認為true。若設置為false,則需手工啟動Scheduler -->
  15. <!-- concurrent='false':false為不允許任務並發執行,即第二個job將不會在第一個job完成之前開始執行.默認情況下,jobs是在並行的方式下運行的 -->
  16. <bean id="quartzJobFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  17. <property name="triggers">
  18. <list>
  19. <ref bean="genCustomizeRelationTrigger"/>
  20. <ref bean="sendInfoTrigger"/>
  21. </list>
  22. </property>
  23. <property name="autoStartup" value="true"/>
  24. </bean>
  25. <bean id="genCustomizeRelationTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
  26. <property name="jobDetail" ref="genCustomizeRelationJobDetail" />
  27. <property name="cronExpression" value="0 30 0 * * ?"/>
  28. </bean>
  29. <bean id="genCustomizeRelationJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  30. <property name="targetObject" ref="recfileQuartz" />
  31. <property name="targetMethod" value="genRecFileRelation" />
  32. <property name="concurrent" value="false" />
  33. </bean>
  34. <bean id="sendInfoTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
  35. <property name="jobDetail" ref="sendInfoDetail"/>
  36. <property name="cronExpression" value="0 */10 * * * ?" />
  37. </bean>
  38. <bean id="sendInfoDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  39. <property name="targetObject" ref="messageSendQuartz" />
  40. <property name="targetMethod" value="executeSend" />
  41. <property name="concurrent" value="false" />
  42. </bean>

下面是MessageSendQuartz.java

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

下面是RecFileQuartz.java

  1. package com.ecpay.cus.quartz;
  2. import org.springframework.transaction.annotation.Transactional;
  3. import com.ecpay.cus.dao.NotActiveUserDAO;
  4. import com.ecpay.cus.dao.PayBusinessCustomizeDAO;
  5. /**
  6. * 業務定制對賬文件之作業調度類
  7. * @author 玄玉<http://blog.csdn.net/jadyer>
  8. * @create May 4, 2012 12:50:28 PM
  9. */
  10. @Transactional
  11. public class RecFileQuartz {
  12. private PayBusinessCustomizeDAO pbcDao;
  13. private NotActiveUserDAO nauDao;
  14. public void setNauDao(NotActiveUserDAO nauDao) {
  15. this.nauDao = nauDao;
  16. }
  17. public void setPbcDao(PayBusinessCustomizeDAO pbcDao) {
  18. this.pbcDao = pbcDao;
  19. }
  20. /**
  21. * 生成定制關系到數據庫
  22. */
  23. @Transactional
  24. public void genRecFileRelation() {
  25. System.out.println("恭喜您:Spring定制調度執行了該方法,本行打印的日志就是該方法的第一行代碼");
  26. }
  27. }
Copyright © Linux教程網 All Rights Reserved