欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SpringBoot實現(xiàn)動態(tài)定時任務(wù)

項目情況:

創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,先為海北州等服務(wù)建站,海北州等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為海北州企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

在當(dāng)前項目中需要一個定時任務(wù)來清除過期的校驗碼,如果使用數(shù)據(jù)庫存儲過程的話不方便維護。因此采用SpringBoot自帶的方式來設(shè)置定時任務(wù)。

技術(shù)說明:

SpringBoot自帶的方式有兩種可以實現(xiàn):

一種是使用@Scheduled注解的方式,只需要在啟動類或者它所在的類上添加@EnableScheduling注解允許執(zhí)行定時任務(wù),并且設(shè)置Schecduled注解的參數(shù),諸如:

        1.cron是設(shè)置定時執(zhí)行的表達(dá)式,如 0 0/5 * * * ?每隔五分鐘執(zhí)行一次

        2.zone表示執(zhí)行時間的時區(qū)

        3.fixedDelay 和fixedDelayString 表示一個固定延遲時間執(zhí)行,上個任務(wù)完成后,延遲多長時間執(zhí)行

        4.fixedRate 和fixedRateString表示一個固定頻率執(zhí)行,上個任務(wù)開始后,多長時間后開始執(zhí)行

        5.initialDelay 和initialDelayString表示一個初始延遲時間,第一次被調(diào)用前延遲的時間

示例代碼如下:

package com.allcom.service;
 
import com.allcom.dao.MySQLDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
 
/**
* @Author: zy
* @Description: 定時任務(wù)
* @Date: 2018/7/12_15:15
**/
@Service
public class TaskService {
 
  @Autowired
  private MysqlDao mysqlDao;
 
  @Scheduled(fixedRate = 5*1000)
  public void deleteInvalidCheckCode() {
    mysqlDao.deleteInvalidCheckCode();
  }
 
}

另一種方式是通過自定義配置類的方式,步驟如下:

第一步:新建一個類實現(xiàn)SchedulingConfigurer接口,并添加@Configuration注解,@EnableScheduling注解可以寫在這里也可以寫在啟動類上,這里我寫在了啟動類上。

SpringBoot實現(xiàn)動態(tài)定時任務(wù)

第二步:重寫configureTasks方法如下代碼所示:

package com.allcom.task;
 
import com.allcom.service.TaskService;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.TriggerContext;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
 
 
 
import java.util.Date;
 
 
@Configuration
public class MyScheduledTask implements SchedulingConfigurer {
 
  @Mapper
  public interface CronMapper {
    @Select("select cron from user_cron limit 1")
    String getCron();
  }
 
  @Autowired
  @SuppressWarnings("all")
  CronMapper cronMapper;
 
 
  @Autowired
  @SuppressWarnings("all")
  private TaskService taskService;
 
  @Override
  public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
      scheduledTaskRegistrar.addTriggerTask(new Runnable() {
        @Override
        public void run() {
          try {
            taskService.deleteInvalidCheckCode(); //異步定時操作
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      }, new Trigger() {
        @Override
        public Date nextExecutionTime(TriggerContext triggerContext) {
          String cron =cronMapper.getCron();
          if("".equals(cron)||cron==null)
            return null;
          //定時任務(wù)觸發(fā),可修改定時任務(wù)的執(zhí)行周期
          CronTrigger trigger=new CronTrigger(cron);
          Date nextExecDate= trigger.nextExecutionTime(triggerContext);
          return nextExecDate;
        }
      });
  }
}

第三步:啟動項目,定時任務(wù)就自動添加了。

注意:這里我使用的是@Mapper注解使用Mybatis寫了一個獲取cron表達(dá)式的接口,可以從數(shù)據(jù)庫中查詢自定義表的cron字段值。這樣的話項目運行的過程中,不用重新啟動項目,只需要修改數(shù)據(jù)庫中的字段值就可以動態(tài)的修改定時任務(wù)中的cron值,實現(xiàn)動態(tài)修改定時任務(wù)執(zhí)行時間的功能。

但是,這種方式有一個缺點就是,將數(shù)據(jù)庫cron字段值設(shè)為null或者“”以及不正確的值,這樣定時任務(wù)就會停止執(zhí)行,這樣就算你下一次再給cron字段添加了正確的值,項目也不會執(zhí)行定時任務(wù)了,這個時候就需要重新啟動數(shù)據(jù)庫才行。

這種方式適合于前臺給幾個特定的值給用戶選擇,不能讓用戶隨便填。

附定時任務(wù)執(zhí)行內(nèi)容:

/**
* @Author: zy
* @Description: 刪除用戶過期的校驗碼
* @Date: 2018/7/12_15:20
**/
@Delete("DELETE from registinfo where id in (select id from (SELECT id FROM registinfo WHERE TIMESTAMPDIFF(MINUTE,lastupdatetime,NOW()) >= 15)a )")
void deleteInvalidCheckCode();

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

文章標(biāo)題:SpringBoot實現(xiàn)動態(tài)定時任務(wù)
分享路徑:http://chinadenli.net/article40/ihjsho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈關(guān)鍵詞優(yōu)化、動態(tài)網(wǎng)站虛擬主機、品牌網(wǎng)站設(shè)計App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
亚洲精品高清国产一线久久| 黄片在线免费观看全集| 国产又大又黄又粗又免费| 亚洲午夜精品视频在线| 99免费人成看国产片| 国产精品视频一级香蕉| 欧美亚洲91在线视频| 亚洲国产性生活高潮免费视频| 欧美黑人黄色一区二区| 欧美精品亚洲精品日韩精品| 亚洲熟女熟妇乱色一区| 日本精品理论在线观看| 男人的天堂的视频东京热| 国产一级不卡视频在线观看| 色婷婷视频免费在线观看| 日本高清中文精品在线不卡| 国产亚洲精品久久久优势| 五月婷婷六月丁香狠狠| 亚洲成人精品免费在线观看| 厕所偷拍一区二区三区视频| 日韩中文字幕狠狠人妻| 激情爱爱一区二区三区| 日韩精品日韩激情日韩综合| 国产亚州欧美一区二区| 日本加勒比在线播放一区| 视频一区二区三区自拍偷| 熟妇人妻av中文字幕老熟妇| 中文字幕精品少妇人妻| 国产精品欧美一区两区| 亚洲性生活一区二区三区| 免费观看一级欧美大片| 亚洲精品福利视频你懂的| 韩日黄片在线免费观看| 手机在线不卡国产视频| 国产精品免费精品一区二区| 好吊色免费在线观看视频| 国产又猛又黄又粗又爽无遮挡| 日韩三极片在线免费播放| 粉嫩一区二区三区粉嫩视频| 国产精品日韩精品最新| 国产欧美日韩一级小黄片|