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

Spring定時任務(wù)實現(xiàn)與配置(一)

 更新時間:2017年06月21日 11:02:41   作者:幻xiang  
這篇文章主要為大家詳細介紹了Spring定時任務(wù)的實現(xiàn)與配置第一篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下

朋友的項目中有點問題。他那邊是Spring架構(gòu)的,有一個比較簡單的需要定時的任務(wù)執(zhí)行。在了解了他的需求之后,于是提出了比較簡單的Spring+quartz的實現(xiàn)方式。

注意本文只是討論,在已搭建完畢的Spring工程下,完成最簡單的定時任務(wù)。

第一步,要知道Spring這個架構(gòu),很有趣很有意思??梢宰龅阶杂刹灏喂δ苣K的效果。工程項目是基于MAVEN包依賴管理的,所以把這次需要的依賴包引用列出來:

<!-- 定時器依賴 開始 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>

 

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<!-- 定時器依賴 結(jié)束 -->

當然,這是要跟對應(yīng)的Spring的版本是要匹配的。我們這里的工程是4.0.2。前一個包spring-context-support,主要的作用是作為Spring與quartz的溝通管理的部件,如果注釋掉就會報這樣的錯誤

 在MAVEN配置完所需要添加的包之后(其他的包,這里暫時不擴展開說了,本文只討論在完整Spring工程項目下的配置),我們就可以開始動手給這個項目添加,定時任務(wù)的功能模塊了。

第二步,從web的項目的起源,web.xml 中改動做起。由于原本的項目Spring的配置文件是Spring-mvc.xml,我這里就把定時任務(wù)的配置文件改成了spring-time.xml。這樣就可以通過同一個掃描的配置在啟動的時候去讀取了。具體的代碼如下:

 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-*.xml</param-value>
  </context-param>

然后給大家看一下我的工程結(jié)構(gòu):

通過這樣的配置,項目就會知道怎么去調(diào)用了。實現(xiàn)了這一步接下來我們就可以繼續(xù)往下走了;

第三步,就是要完成spring-timer.xml這個定時任務(wù)的核心配置了。在這個文件配置中,我們主要是完成三件事情:

  1.配置啟動的設(shè)置,關(guān)于懶加載(簡單說一下,比如把某個變量初始化為null,也是一種懶加載,即在服務(wù)啟動之后,只有在實際被調(diào)用的時候才會實例化,否則是不會在內(nèi)存中存在的,只是邏輯上的。可以省空間,但是也可能會導致,問題延遲很久才會被發(fā)現(xiàn),此處不再詳細解說),以及觸發(fā)器的配置;

  2.quartz-2.x的配置,包含定時任務(wù)觸發(fā)之后要調(diào)用的job的名字,以及corn表達式(即定時表達式,控制程序在何時重復執(zhí)行的原因,本次在會在后續(xù)補充關(guān)于cron表達式的內(nèi)容);

  3.配置job的內(nèi)容和job對應(yīng)的具體的類。

好了邏輯流程解說完畢,上代碼:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:p="http://www.springframework.org/schema/p" 
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 
 
    <!-- 啟動觸發(fā)器的配置開始 --> 
  <bean name="startQuertz" lazy-init="false" autowire="no" 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
      <list> 
        <ref bean="myJobTrigger" /> 
      </list> 
    </property> 
  </bean> 
  <!-- 啟動觸發(fā)器的配置結(jié)束 --> 
 
  <!-- 調(diào)度的配置開始 --> 
  <!-- 
    quartz-1.8以前的配置  
  <bean id="myJobTrigger" 
    class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail"> 
      <ref bean="myJobDetail" /> 
    </property> 
    <property name="cronExpression"> 
      <value>0/1 * * * * ?</value> 
    </property> 
  </bean> 
  --> 
  <!-- quartz-2.x的配置 --> 
  <bean id="myJobTrigger" 
    class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 
    <property name="jobDetail"> 
      <ref bean="myJobDetail" /> 
    </property> 
    <property name="cronExpression"> 
    
    <value>0/10 * * * * ?</value>
     <!--  <value>1 52 * * * ?</value> --> 
    </property> 
  </bean> 
  <!-- 調(diào)度的配置結(jié)束 --> 
 
  <!-- job的配置開始 --> 
  <bean id="myJobDetail" 
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="targetObject"> 
      <ref bean="myJob" /> 
    </property> 
    <property name="targetMethod"> 
      <value>work</value> 
    </property> 
  </bean> 
  <!-- job的配置結(jié)束 --> 
 
  <!-- 工作的bean --> 
  <bean id="myJob" class="com.tec.kevin.quartz.jobTest" /> 
 
</beans>

完成這里的配置文件配置之后,就可以開始下一步,具體的業(yè)務(wù)邏輯實現(xiàn)了;

第四步,具體業(yè)務(wù)邏輯實現(xiàn)。

這里要注意的是下圖中的兩個點

上圖是具體的業(yè)務(wù)實現(xiàn)的類,里面的名字和下圖定時任務(wù)配置的要相同。

完成上述之后,我們可以啟動項目看看實際效果了。

這里可以看到,定時任務(wù)按照我們之前在配置中的 <value>0/10 * * * * ?</value> 每10秒執(zhí)行一次 來運行了。

要注意的是,在實現(xiàn)這個方法的過程中,我遇到了重復執(zhí)行的情況。就是同一個時間,執(zhí)行了兩次。后來找到的原因是在配置web.xml的時候,重復配置了定時任務(wù),這樣導致執(zhí)行了多次。要是有遇到這個情況的,可以參考我的解決方法。

接來下會有兩篇文章,一篇是寫定時任務(wù)的更簡單的實現(xiàn)方法,另外一篇講解cron 表達式。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于Java中的IO流總結(jié)(推薦)

    關(guān)于Java中的IO流總結(jié)(推薦)

    下面小編就為大家?guī)硪黄P(guān)于Java中的IO流總結(jié)(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 詳解JAVA中implement和extends的區(qū)別

    詳解JAVA中implement和extends的區(qū)別

    這篇文章主要介紹了詳解JAVA中implement和extends的區(qū)別的相關(guān)資料,extends是繼承接口,implement是一個類實現(xiàn)一個接口的關(guān)鍵字,需要的朋友可以參考下
    2017-08-08
  • 詳解springMVC—三種控制器controller

    詳解springMVC—三種控制器controller

    本篇文章主要介紹了springMVC—三種控制器controller,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 淺談用java實現(xiàn)事件驅(qū)動機制

    淺談用java實現(xiàn)事件驅(qū)動機制

    這篇文章主要介紹了淺談用java實現(xiàn)事件驅(qū)動機制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • java 利用HttpClient PostMethod提交json數(shù)據(jù)操作

    java 利用HttpClient PostMethod提交json數(shù)據(jù)操作

    這篇文章主要介紹了java 利用HttpClient PostMethod提交json數(shù)據(jù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java 8中如何獲取參數(shù)名稱的方法示例

    Java 8中如何獲取參數(shù)名稱的方法示例

    這篇文章主要給大家介紹了在Java 8中如何獲取參數(shù)名稱的方法,文中給出了詳細的介紹和方法示例,相信對大家的理解和學習具有一定的參考借鑒價值,有需要的朋友可以參考學習,下面來一起看看吧。
    2017-01-01
  • 淺談Java編程中string的理解與運用

    淺談Java編程中string的理解與運用

    這篇文章主要介紹了淺談Java編程中string的理解與運用,還是比較不錯的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • java基于雙向環(huán)形鏈表解決丟手帕問題的方法示例

    java基于雙向環(huán)形鏈表解決丟手帕問題的方法示例

    這篇文章主要介紹了java基于雙向環(huán)形鏈表解決丟手帕問題的方法,簡單描述了丟手帕問題,并結(jié)合實例形式給出了Java基于雙向環(huán)形鏈表解決丟手帕問題的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • MVC+DAO設(shè)計模式下的設(shè)計流程詳解

    MVC+DAO設(shè)計模式下的設(shè)計流程詳解

    這篇文章主要介紹了MVC+DAO設(shè)計模式下的設(shè)計流程詳解,分別介紹了數(shù)據(jù)庫設(shè)計、設(shè)計符合java bean標準的entity類、設(shè)計訪問數(shù)據(jù)庫的DAO接口等內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • Spring Boot部署到Tomcat過程中遇到的問題匯總

    Spring Boot部署到Tomcat過程中遇到的問題匯總

    這篇文章主要給大家分享了關(guān)于Spring Boot部署到Tomcat過程中遇到的一些問題,文中將解決的方法介紹非常詳細,對同樣遇到這個問題的朋友具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-03-03

最新評論

黎城县| 金门县| 兴义市| 鹤山市| 浠水县| 阜南县| 三门峡市| 襄樊市| 佳木斯市| 渝中区| 泸溪县| 尚志市| 福贡县| 策勒县| 莎车县| 托克逊县| 和林格尔县| 东阳市| 长乐市| 登封市| 日土县| 南华县| 辉县市| 蒙山县| 青铜峡市| 安国市| 沭阳县| 盘山县| 吴堡县| 吴旗县| 新源县| 满洲里市| 德令哈市| 兰溪市| 曲水县| 平果县| 华安县| 屏东市| 望城县| 赣州市| 吐鲁番市|