国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring定時任務實現與配置(一)

Spring定時任務實現與配置(一)

2020-11-22 22:43幻xiang Java教程

這篇文章主要為大家詳細介紹了Spring定時任務的實現與配置第一篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下

朋友的項目中有點問題。他那邊是spring架構的,有一個比較簡單的需要定時的任務執行。在了解了他的需求之后,于是提出了比較簡單的spring+quartz的實現方式。

注意本文只是討論,在已搭建完畢的spring工程下,完成最簡單的定時任務

第一步,要知道spring這個架構,很有趣很有意思。可以做到自由插拔功能模塊的效果。工程項目是基于maven包依賴管理的,所以把這次需要的依賴包引用列出來:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- 定時器依賴 開始 -->
<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>
<!-- 定時器依賴 結束 -->

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

Spring定時任務實現與配置(一)

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

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

?
1
2
3
4
<context-param>
   <param-name>contextconfiglocation</param-name>
   <param-value>classpath:spring-*.xml</param-value>
 </context-param>

然后給大家看一下我的工程結構:

Spring定時任務實現與配置(一)

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

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

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

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

  3.配置job的內容和job對應的具體的類。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?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">
 
    <!-- 啟動觸發器的配置開始 -->
  <bean name="startquertz" lazy-init="false" autowire="no"
    class="org.springframework.scheduling.quartz.schedulerfactorybean">
    <property name="triggers">
      <list>
        <ref bean="myjobtrigger" />
      </list>
    </property>
  </bean>
  <!-- 啟動觸發器的配置結束 -->
 
  <!-- 調度的配置開始 -->
  <!--
    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>
  <!-- 調度的配置結束 -->
 
  <!-- 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的配置結束 -->
 
  <!-- 工作的bean -->
  <bean id="myjob" class="com.tec.kevin.quartz.jobtest" />
 
</beans>

完成這里的配置文件配置之后,就可以開始下一步,具體的業務邏輯實現了;

第四步,具體業務邏輯實現。

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

Spring定時任務實現與配置(一)

上圖是具體的業務實現的類,里面的名字和下圖定時任務配置的要相同。

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

Spring定時任務實現與配置(一)

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

Spring定時任務實現與配置(一)

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 五月天婷婷激情 | 亚洲免费成人在线视频 | 青青操av | 国产亚洲精品精品国产亚洲综合 | 亚洲视频自拍 | 日本福利在线观看 | 国产高清在线精品一区二区三区 | 91午夜伦伦电影理论片 | 欧美一级c片 | 碰碰视频 | 四虎在线视频 | 99这里只有精品视频 | 久久国产亚洲精品 | 天天澡天天狠天天天做 | 国产欧美精品区一区二区三区 | 国产一区精品在线 | 在线一级电影 | 亚洲一区二区三区高清 | 国产成人jvid在线播放 | 日b片| 精品无码久久久久久国产 | 免费久草 | 亚洲毛片在线 | 亚洲精品免费在线观看视频 | 精品视频久久久久 | 亚洲精品久久久久久久久久久久久 | 色在线视频观看 | 久久综合2019| 亚洲一区二区精品 | 四虎影视免费看电影 | 国产精品视频免费看 | 欧美3区| 国产精品18久久久 | 久久精品国产99 | 这里只有精品视频在线 | 伊人网在线视频观看 | 成人激情在线观看 | 国产精品亲子伦av一区二区三区 | 欧美在线免费观看 | 国产精品不卡一区二区三区 | 免费看黄色一级电影 |