最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JAVA中 Spring定時器的兩種實現(xiàn)方式

 更新時間:2015年09月21日 10:44:34   投稿:mrr  
本文向您介紹Spring定時器的兩種實現(xiàn)方式,包括Java Timer定時和Quartz定時器,兩種Spring定時器的實現(xiàn)方式各有優(yōu)點,可結(jié)合具體項目考慮是否采用。

目前有兩種流行Spring定時器配置:Java的Timer類和OpenSymphony的Quartz。

1.Java Timer定時

首先繼承java.util.TimerTask類實現(xiàn)run方法

import java.util.TimerTask;  
public class EmailReportTask extends TimerTask{  
  @Override  
  public void run() {  
    ...  
  }   
}

在Spring定義

...

配置Spring定時器

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">  
<property name="timerTask" ref="reportTimerTask" />  
<property name="period">  
<value>86400000value>  
property>  
bean> 

timerTask屬性告訴ScheduledTimerTask運行哪個。86400000代表24個小時

啟動Spring定時器

Spring的TimerFactoryBean負(fù)責(zé)啟動定時任務(wù)

<bean class="org.springframework.scheduling.timer.TimerFactoryBean">  
<property name="scheduledTimerTasks">  
  <list><ref bean="scheduleReportTask"/>list>  
property>  
bean> 

scheduledTimerTasks里顯示一個需要啟動的定時器任務(wù)的列表。

可以通過設(shè)置delay屬性延遲啟動  

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">  
<property name="timerTask" ref="reportTimerTask" />  
<property name="period">  
<value>86400000value>  
property>  
<property name="delay">  
<value>3600000value>  
property>  
bean>  

這個任務(wù)我們只能規(guī)定每隔24小時運行一次,無法精確到某時啟動

2.Quartz定時器

首先繼承QuartzJobBean類實現(xiàn)executeInternal方法

import org.quartz.JobExecutionContext;  
import org.quartz.JobExecutionException;  
import org.springframework.scheduling.quartz.QuartzJobBean;  
public class EmailReportJob extends QuartzJobBean{  
protected void executeInternal(JobExecutionContext arg0)  
throws JobExecutionException {  
...  
}  
}

在Spring中定義

<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
<property name="jobClass">  
<value>EmailReportJobvalue>  
property>  
<property name="jobDataAsMap">  
  <map>  
    <entry key="courseService">  
      <ref bean="courseService"/>  
      entry>  
  map>  
property>  
bean> 

在這里我們并沒有直接聲明一個EmailReportJob Bean,而是聲明了一個JobDetailBean。這個是Quartz的特點。JobDetailBean是Quartz的org.quartz.JobDetail的子類,它要求通過jobClass屬性來設(shè)置一個Job對象。

使用Quartz的JobDetail中的另一個特別之處是EmailReportJob的courseService屬性是間接設(shè)置的。JobDetail的jobDataAsMap屬性接受一個Map,包括設(shè)置給jobClass的各種屬性,當(dāng)。JobDetailBean實例化時,它會將courseService Bean注入到EmailReportJob 的courseService 屬性中。

啟動定時器

Quartz的org.quartz.Trigger類描述了何時及以怎樣的頻度運行一個Quartz工作。Spring提供了兩個觸發(fā)器SimpleTriggerBean和CronTriggerBean。

SimpleTriggerBean與scheduledTimerTasks類似。指定工作的執(zhí)行頻度,模仿scheduledTimerTasks配置 .

<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
<property name="jobDetail" ref="reprotJob" />  
<property name="startDelay">  
<value>360000value>  
property>  
<property name="repeatInterval">  
  <value>86400000value>  
property>  
bean>

startDelay也是延遲1個小時啟動

CronTriggerBean指定工作的準(zhǔn)確運行時間

<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
<property name="jobDetail" ref="reprotJob" />  
<property name="cronExpression">  
<value>0 0 6 * * ?value>  
property>  
bean> 

屬性cronExpression告訴何時觸發(fā)。最神秘就是cron表達(dá)式:

Linux系統(tǒng)的計劃任務(wù)通常有cron來承擔(dān)。一個cron表達(dá)式有至少6個(也可能7個)有空格分隔的時間元素。從左到右:

1.秒2.分3.小時4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)
每個元素都顯示的規(guī)定一個值(如6),一個區(qū)間(9-12),一個列表(9,11,13)或一個通配符(*)。因為4和6這兩個元素是互斥的,因此應(yīng)該通過設(shè)置一個問號(?)來表明不想設(shè)置的那個字段,“/”如果值組合就表示重復(fù)次數(shù)(10/6表示每10秒重復(fù)6次)。

啟動定時器

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

triggers屬性接受一組觸發(fā)器。

好了,本文內(nèi)容到此結(jié)束了,寫的還不錯吧,有不足之處,歡迎各位大俠提出寶貴意見。

相關(guān)文章

  • SpringBoot3.3.X整合Mybatis-Plus的實現(xiàn)示例

    SpringBoot3.3.X整合Mybatis-Plus的實現(xiàn)示例

    本文介紹了在Spring Boot 3.3.2中整合MyBatis-Plus 3.5.7,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Java中SpringBoot的@Transactional原理

    Java中SpringBoot的@Transactional原理

    這篇文章主要介紹了Java中SpringBoot的@Transactional原理,面向元數(shù)據(jù)遍歷已經(jīng)成為越來越多開發(fā)者的偏好,因此原理從Springboot的EnableTransactionManagement注解說起,需要的朋友可以參考下
    2023-07-07
  • mybatis中的count()按條件查詢方式

    mybatis中的count()按條件查詢方式

    這篇文章主要介紹了mybatis中的count()按條件查詢方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 初識JAVA數(shù)組

    初識JAVA數(shù)組

    java語言中,數(shù)組是一種最簡單的復(fù)合數(shù)據(jù)類型。數(shù)組是有序數(shù)據(jù)的集合,數(shù)組中的每個元素具有相同的數(shù)據(jù)類型,可以用一個統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素。數(shù)組有一維數(shù)組和多維數(shù)組。
    2014-08-08
  • 五分鐘帶你了解Java的接口數(shù)據(jù)校驗

    五分鐘帶你了解Java的接口數(shù)據(jù)校驗

    這篇文章主要介紹了五分鐘帶你了解Java的接口數(shù)據(jù)校驗,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 4位吸血鬼數(shù)字的java實現(xiàn)思路與實例講解

    4位吸血鬼數(shù)字的java實現(xiàn)思路與實例講解

    今天小編就為大家分享一篇關(guān)于4位吸血鬼數(shù)字的java實現(xiàn)思路與實例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • java圖片對比度調(diào)整示例代碼

    java圖片對比度調(diào)整示例代碼

    這篇文章主要給大家介紹了關(guān)于java圖片對比度調(diào)整的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Java模擬實現(xiàn)斗地主的洗牌和發(fā)牌

    Java模擬實現(xiàn)斗地主的洗牌和發(fā)牌

    這篇文章主要為大家詳細(xì)介紹了Java模擬實現(xiàn)斗地主的洗牌和發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • JavaFX實現(xiàn)簡易時鐘效果

    JavaFX實現(xiàn)簡易時鐘效果

    這篇文章主要為大家詳細(xì)介紹了JavaFX實現(xiàn)簡易時鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Java super關(guān)鍵字的使用方法詳解

    Java super關(guān)鍵字的使用方法詳解

    這篇文章主要介紹了Java super關(guān)鍵字的使用方法詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家對super關(guān)鍵字徹底掌握,需要的朋友可以參考下
    2017-10-10

最新評論

万盛区| 驻马店市| 容城县| 阿合奇县| 拉孜县| 房产| 始兴县| 商南县| 岳普湖县| 新民市| 阿克苏市| 府谷县| 五华县| 南阳市| 平顶山市| 阳信县| 民和| 勐海县| 志丹县| 闽侯县| 博乐市| 禹城市| 游戏| 孟州市| 凤山市| 鹤山市| 台中县| 青州市| 大荔县| 牙克石市| 循化| 吴堡县| 阿巴嘎旗| 谷城县| 凤山县| 西吉县| 彰武县| 化州市| 武定县| 武山县| 阳泉市|