程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring定時任務實現與配置(二)

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

編輯:關於JAVA

接上一篇,原本我以為我實現的方式很簡單了,在准備寫(一)的時候,就去查了查別人是怎麼實現定時任務的。不查還好,這一查,發現還有更簡單的。所以就會有這篇文章。

本文主要是討論,在完成Spring 項目搭建的情況下完成簡單的定時任務實現。

在上一篇中,我們實現了“最簡單”的定時任務,在那裡我們是基於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>
    <!-- 定時器依賴 結束 -->

原本我想著 新的方法可能不需要呢,於是試試注釋掉會怎麼樣,於是就出現了這樣的情況:

顯然我想錯了,正式開始:

第一步,在maven的pom文件中添加上文列出的兩個包;

第二步,在spring配置管理xml頭部中,添加命名空間(大部分文獻都是這樣寫的,但還沒有找到正式的說法,如果有我會再修改這個名詞的,現在暫且用著)

<beans xmlns:task="http://www.springframework.org/schema/task"   
xsi:schemaLocation="http://www.springframework.org/schema/task          
http://www.springframework.org/schema/task/spring-task-4.1.xsd ">

第三步,在spring配置文件中配置定時任務相關內容  

<task:annotation-driven scheduler="kevinScheduler"/>  
<task:scheduler id="kevinScheduler" pool-size="5"/> 

第四步,完成業務邏輯實現類:

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.concurrent.TimeUnit; 
import org.joda.time.DateTime; 
import org.springframework.scheduling.annotation.Scheduled; 
import org.springframework.stereotype.Component; 
@Component 
public class ATask { 
    @Scheduled(cron="0/10 * * * * ? ")  //每10秒執行一次   
    public void aTask(){   
      try { 
        TimeUnit.SECONDS.sleep(20); 
      } catch (InterruptedException e) { 
        e.printStackTrace(); 
      } 
      DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
      System.out.println(sdf.format(DateTime.now().toDate())+"*********A任務每10秒執行一次進入測試");   
    }   
}

這樣的方式比配置的更為簡單,但是我認為配置的方式會更加靈活,當然實現的方式方法很多。我們只討論最簡單的實現,顯然這個是我看到的最簡單的實現方法。

開啟服務,我們來看看效果:

大致就這樣完成了,但是這裡我發現好像遇到了上一篇文章結尾的時候,提到的同一時間點運行了兩次代碼。我得再看看 ,如果有知道的朋友請給我留言!

下一篇是寫關於cron 表達式

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved