中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring對Quartz任務調度提供了什么支持

發布時間:2021-12-16 09:07:25 來源:億速云 閱讀:141 作者:iii 欄目:編程語言

這篇文章主要講解了“Spring對Quartz任務調度提供了什么支持”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring對Quartz任務調度提供了什么支持”吧!

Spring框架提供了豐富的Quartz任務調度支持,比如,在何時執行何種任務,它是一個開源的由OpenSymphony維護的項目,開發者能夠在 Java EE,或單獨的Java SE應用中使用它。無論是簡單的任務調度,還是復雜的企業級應用,Quartz都能夠很好地勝任。其中,這些任務可以是普通POJO,甚至還可以是EJB 3.0組件。

如果開發者需要開發如下方面的應用,則Quartz是理想的選擇。


◆驅動工作流:比如,如果新創建的流程任務需要在2小時內處理完,則在2小時后Quartz會檢查訂單是否成功處理。如果沒有處理,則Quartz會依據工作流定義的規則來對訂單進行處理,銷毀它,或者進行其他處理。
◆系統維護工作:比如,在每個工作日的固定時間將RDBMS中的內容導出為XML文件。

Spring 2.0提供了org.springframework.scheduling.quartz包,以支持Quartz任務調度集成。為提供用戶的任務,開發者實現的類必須繼承于quartz.QuartzJobBean抽象類。QuartzJobBean是Quartz中org.quartz.Job接口的簡單實現(子類),Spring為簡化Job接口的實現而提供了QuartzJobBean類。QuartzJobBean同Java 2 SDK中的TimerTask類似,用于定義任務本身。其中,executeInternal()方法定義待執行的任務,這同TimerTask中的 run()類似。下面給出了imagedb中ListImagesQuartzJob的定義,它同ListImagesTimerTask幾乎沒有區別。

  1. public class ListImagesQuartzJob extends QuartzJobBean {  

  2. private ImageDatabase imageDatabase;  

  3. private MailSender mailSender;  

  4. private String mailFrom;  

  5. private String mailTo;  

  6. public void setImageDatabase(ImageDatabase imageDatabase) {  

  7. this.imageDatabase = imageDatabase;  

  8. }  


  9. public void setMailSender(MailSender mailSender) {  

  10. this.mailSender = mailSender;  

  11. }  


  12. public void setMailFrom(String mailFrom) {  

  13. this.mailFrom = mailFrom;  

  14. }  


  15. public void setMailTo(String mailTo) {  

  16. this.mailTo = mailTo;  

  17. }  


  18. protected void executeInternal(JobExecutionContext context) {  

  19. ......  

  20. logger.info("Next job execution at: " + context.getNextFireTime());  

  21. }  

開發者可以通過executeInternal()方法指定待完成的用戶任務,而通過傳入它的context能夠獲得任務執行的上下文信息,比如,下次執行用戶任務的時間。隨后,我們要指定相應的調度規則,下面給出了context/WEB-INF/schedulingContext- quartz.xml中的相關配置信息。JobDetailBean是Quartz中org.quartz.JobDetail的子類,Spring為簡化JobDetail子類的開發而提供了JobDetailBean。借助于JobDetailBean中的jobClass屬性能夠設置Job對象類型,而借助于jobDataAsMap屬性能夠為ListImagesQuartzJob的各個屬性提供目標取值。

  1. <bean id="listImagesJobDetail" class="org.springframework.scheduling.quartz.  

  2. JobDetailBean"> 

  3. <property name="jobClass" value="org.springframework.samples.imagedb.  

  4. scheduling.ListImagesQuartzJob"/> 

  5. <property name="jobDataAsMap"> 

  6. <map> 

  7. <entry key="imageDatabase" value-ref="imageDatabase"/> 

  8. <entry key="mailSender" value-ref="mailSender"/> 

  9. <entry key="mailFrom" value="${mail.from}"/> 

  10. <entry key="mailTo" value="${mail.to}"/> 

  11. map> 

  12. property> 

  13. bean> 


  14. <bean id="listImagesTrigger" class="org.springframework.scheduling.quartz.  

  15. SimpleTriggerBean"> 

  16. <property name="jobDetail" ref="listImagesJobDetail"/> 

  17. <property name="startDelay" value="10000"/> 

  18. <property name="repeatInterval" value="10000"/> 

  19. bean> 

SimpleTriggerBean是Quartz中org.quartz.SimpleTrigger的子類,為簡化SimpleTrigger 子類的開發,Spring提供了它。為指定調度規則,開發者需要使用它設定運行任務的頻率和時機。SimpleTriggerBean同Timer任務調度中的ScheduledTimerTask類似,但功能上比它更強大。此時,SimpleTriggerBean暴露的startDelay屬性的含義同ScheduledTimerTask中的delay屬性,而repeatInterval屬性同period屬性。

為了指定更復雜的任務調度規則,開發者要使用Spring提供的CronTriggerBean,它是Quartz中 org.quartz.CronTrigger的子類,Spring 2.0為簡化CronTrigger子類的開發而提供了CronTriggerBean。CronTriggerBean比 SimpleTriggerBean功能更強大,它能夠控制任務執行的精確時間,比如,早上九點半需要執行某QuartzJobBean中給定的任務。借助于CronTriggerBean中的cronExpression屬性能夠設定任務的執行時機。下面展示了相應的配置示例。

  1. <bean id="checkImagesJobDetail" 

  2. class="org.springframework.scheduling.quartz.  

  3. MethodInvokingJobDetailFactoryBean"> 

  4. <property name="targetObject" ref="imageDatabase"/> 

  5. <property name="targetMethod" value="checkImages"/> 

  6. <property name="concurrent" value="true"/> 

  7. bean> 


  8. <bean id="checkImagesTrigger" 

  9. class="org.springframework.scheduling.quartz.CronTriggerBean"> 

  10. <property name="jobDetail" ref="checkImagesJobDetail"/> 

  11. <property name="cronExpression" value="0/5 * * * * ?"/> 

  12. bean> 

上述配置片斷還使用到MethodInvokingJobDetailFactoryBean,它能夠將普通的POJO指定為用戶任務。這也是Spring Quartz任務調度集成支持的另一種指定用戶任務的策略。

在制訂上述2條調度規則后,開發者要實施它們,而SchedulerFactoryBean能夠擔當此任,示例配置如下。借助于triggers屬性,開發者能夠指定由若干SimpleTriggerBean和CronTriggerBean構成的集合;借助于quartzProperties屬性,開發者能夠控制Quartz的具體細節,比如,線程池中線程的數量。

  1. <bean id="scheduler" class="org.springframework.scheduling.quartz.  

  2. SchedulerFactoryBean"> 

  3. <property name="triggers"> 

  4. <list> 

  5. <ref local="listImagesTrigger"/> 

  6. <ref local="checkImagesTrigger"/> 

  7. list> 

  8. property> 

  9. <property name="quartzProperties"> 

  10. <props> 

  11. <prop key="org.quartz.threadPool.threadCount">5prop> 

  12. props> 

  13. property> 

  14. bean> 

感謝各位的閱讀,以上就是“Spring對Quartz任務調度提供了什么支持”的內容了,經過本文的學習后,相信大家對Spring對Quartz任務調度提供了什么支持這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

筠连县| 克山县| 大连市| 左云县| 临洮县| 德保县| 太原市| 正镶白旗| 新建县| 天台县| 辽宁省| 察哈| 枝江市| 长寿区| 淮北市| 晋江市| 永年县| 栾城县| 嘉祥县| 靖边县| 漳州市| 桃园县| 九寨沟县| 武定县| 岳阳市| 申扎县| 方城县| 从江县| 奇台县| 婺源县| 中方县| 吴川市| 阜平县| 长春市| 射洪县| 凤翔县| 湟源县| 双流县| 周至县| 简阳市| 安远县|