溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何實(shí)現(xiàn)Spring監(jiān)聽器和定時(shí)任務(wù)

發(fā)布時(shí)間:2020-07-27 09:15:25 來源:億速云 閱讀:181 作者:小豬 欄目:開發(fā)技術(shù)

小編這次要給大家分享的是如何實(shí)現(xiàn)Spring監(jiān)聽器和定時(shí)任務(wù),文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

背景:在原SSM項(xiàng)目中,擬定在每晚的23:59:59執(zhí)行一個(gè)批處理任務(wù)。

設(shè)計(jì)思路:用jdk自帶的定時(shí)器觸發(fā)任務(wù)執(zhí)行,設(shè)置下次執(zhí)行間隔為24小時(shí)。定時(shí)任務(wù)由spring的監(jiān)聽器去啟動(dòng)。

jdk版本:1.8.0

上代碼

web.xml,添加監(jiān)聽

  <listener>
    <listener-class>com.test.listener.Listener</listener-class>
  </listener>

添加監(jiān)聽類

import com.test.timmer.TimmerTest;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.util.Calendar;
import java.util.Timer;

public class Listener implements ServletContextListener {

  public void contextInitialized(ServletContextEvent sce) {
    System.out.println("啟動(dòng)監(jiān)聽。。。。。。。。。。。。。。。。。");
    //定時(shí)器
    Timer timer = new Timer();
    //定時(shí)任務(wù)對(duì)象
    TimmerTest task = new TimmerTest();
    //指定到23:59:59
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY,23);
    calendar.set(Calendar.MINUTE,59);
    calendar.set(Calendar.SECOND,59);
    //每天的23:59:59秒執(zhí)行任務(wù),下次執(zhí)行延遲時(shí)長(zhǎng)為24小時(shí)
    timer.schedule(task, calendar.getTime(), 24*60*60*1000);

  }

  public void contextDestroyed(ServletContextEvent sce) {

  }
}

添加定時(shí)任務(wù)實(shí)例,jdk的定時(shí)任務(wù)類需繼承 java.util.TimerTask 抽象類

package com.test.timmer;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;

public class TimmerTest extends TimerTask {

  public void run() {
    Date dt = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH時(shí)mm分ss秒");
    System.out.println(sdf.format(new Date())+",執(zhí)行定時(shí)任務(wù)");
  }
}

看完這篇關(guān)于如何實(shí)現(xiàn)Spring監(jiān)聽器和定時(shí)任務(wù)的文章,如果覺得文章內(nèi)容寫得不錯(cuò)的話,可以把它分享出去給更多人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI