亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于Springboot執(zhí)行多個(gè)定時(shí)任務(wù)并動(dòng)態(tài)獲取定時(shí)任務(wù)信息

 更新時(shí)間:2019年04月24日 15:36:01   作者:CarolLXW  
這篇文章主要為大家詳細(xì)介紹了基于Springboot執(zhí)行多個(gè)定時(shí)任務(wù)并動(dòng)態(tài)獲取定時(shí)任務(wù)信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

簡(jiǎn)介

因?yàn)橐恍I(yè)務(wù)的需要所有需要使用多個(gè)不同的定時(shí)任務(wù),并且每個(gè)定時(shí)任務(wù)中的定時(shí)信息是通過數(shù)據(jù)庫(kù)動(dòng)態(tài)獲取的。下面是我寫的使用了Springboot+Mybatis寫的多任務(wù)定時(shí)器。

主要實(shí)現(xiàn)了以下功能:

1、同時(shí)使用多個(gè)定時(shí)任務(wù)
2、動(dòng)態(tài)獲取定時(shí)任務(wù)的定時(shí)信息

說明

因?yàn)槲覀冃枰獜臄?shù)據(jù)庫(kù)動(dòng)態(tài)的獲取定時(shí)任務(wù)的信息,所以我們需要集成 SchedulingConfigurer 然后重寫 configureTasks 方法即可,調(diào)用不同的定時(shí)任務(wù)只需要通過service方法調(diào)用不用的實(shí)現(xiàn)返回對(duì)應(yīng)的定時(shí)任務(wù)信息。有多少個(gè)定時(shí)任務(wù)就重寫多少個(gè)該方法(最好創(chuàng)建不同的類)。然后直接在application中啟動(dòng)即可。

SpringApplication-啟動(dòng)類

package test;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;


@SpringBootApplication
@EnableTransactionManagement
@EnableScheduling
@ComponentScan(value = {"test.*"})
@MapperScan("test.mapper.*")
public class TomcatlogApplication {

  public static void main(String[] args) {
    SpringApplication.run(TomcatlogApplication.class, args);
  }

}

動(dòng)態(tài)獲取定時(shí)任務(wù)信息

mapper

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/*
 * @version 1.0 created by liuxuewen on 2018/8/21 14:39
 */
public interface TomcatlogMapper {
  @Select("SELECT * FROM scheduledtask s WHERE s.`enable` = 1")
  String queryScheduledTask();
}

service

package test.service;
import java.util.ArrayList;
import java.util.List;

/*
 * @version 1.0 created by liuxuewen on 2018/8/21 14:44
 */
public interface TomcatlogService {
  List<ScheduledtaskEntity> queryScheduledTask();
}

service impl

import test.mapper.tomcatlog.TomcatlogMapper;
import test.service.TomcatlogService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

/*
 * @version 1.0 created by liuxuewen on 2018/8/21 14:44
 */
@Service
public class TomcatlogServiceImpl implements TomcatlogService {
  private static final Logger LOGGER = LoggerFactory.getLogger(TomcatlogServiceImpl.class);

  @Autowired
  TomcatlogMapper tomcatlogMapper;

  @Override
  public String queryScheduledTask() {
    try {
      String res = tomcatlogMapper.queryScheduledTask();
      return res;
    } catch (Exception e) {
      LOGGER.info(e);
    }
    return null;
}

定時(shí)任務(wù)

package test.schedultask;

import test.controller.MainController;
import test.service.ControllerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

/*
 * @version 1.0 created by liuxuewen on 2018/8/27 9:25
 */
@Component
public class ElasticsearchSchedultaskController implements SchedulingConfigurer {
  private static final Logger LOGGER = LoggerFactory.getLogger(ElasticsearchSchedultaskController.class);

  @Autowired
  private ControllerService controllerService;

  @Autowired
  private MainController mainController;

  @Override
  public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
    try {
      scheduledTaskRegistrar.addTriggerTask(
          //1.添加任務(wù)內(nèi)容(Runnable),可以為方法
          () -> Sytem.out.println("定時(shí)任務(wù)1"),
          //2.設(shè)置執(zhí)行周期(Trigger)
          triggerContext -> {
            //2.1 從數(shù)據(jù)庫(kù)獲取執(zhí)行周期,在這里調(diào)用不同的方法返回不同的定時(shí)任務(wù)信息
            String cron = controllerService.getSchedultaskForElasticsearch();
            System.out.println("controllerService.getSchedultaskForElasticsearch()");
            System.out.println(cron);
            //2.2 合法性校驗(yàn).
            if (StringUtils.isEmpty(cron)) {
              // Omitted Code ..
              LOGGER.error("計(jì)劃任務(wù)為空");
            }
            //2.3 返回執(zhí)行周期(Date)
            return new CronTrigger(cron).nextExecutionTime(triggerContext);
          }
      );
    }catch (Exception e){
      String ex = exceptionLoggingUtil.exceptionPrint(e);
      LOGGER.info(ex);
    }

  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解SpringBoot讀取resource目錄下properties文件的常見方式

    詳解SpringBoot讀取resource目錄下properties文件的常見方式

    這篇文章主要介紹了SpringBoot讀取resource目錄下properties文件的常見方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 深入了解Java并發(fā)AQS的獨(dú)占鎖模式

    深入了解Java并發(fā)AQS的獨(dú)占鎖模式

    AQS是一種提供了原子式管理同步狀態(tài)、阻塞和喚醒線程功能以及隊(duì)列模型的簡(jiǎn)單框架。一般來說,同步工具實(shí)現(xiàn)鎖的控制分為獨(dú)占鎖和共享鎖,而AQS提供了對(duì)這兩種模式的支持。本文主要來介紹一下獨(dú)占鎖模式,需要的可以參考一下
    2022-10-10
  • Spring事務(wù)管理只對(duì)出現(xiàn)運(yùn)行期異常進(jìn)行回滾

    Spring事務(wù)管理只對(duì)出現(xiàn)運(yùn)行期異常進(jìn)行回滾

    Spring的事務(wù)管理默認(rèn)只對(duì)出現(xiàn)運(yùn)行期異常(java.lang.RuntimeException及其子類)進(jìn)行回滾,需要了解更多Spring事務(wù)方面的知識(shí),可詳看本文
    2012-11-11
  • Flutter實(shí)現(xiàn)文本組件、圖標(biāo)及按鈕組件的代碼

    Flutter實(shí)現(xiàn)文本組件、圖標(biāo)及按鈕組件的代碼

    這篇文章主要介紹了Flutter實(shí)現(xiàn)文本組件、圖標(biāo)及按鈕組件的代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • java中break和continue源碼解析

    java中break和continue源碼解析

    這篇文章主要針對(duì)java中break和continue的區(qū)別進(jìn)行詳細(xì)介紹,幫助大家更好的學(xué)習(xí)了解java中break和continue源碼,感興趣的小伙伴們可以參考一下
    2016-06-06
  • SpringBoot使用AOP+注解實(shí)現(xiàn)簡(jiǎn)單的權(quán)限驗(yàn)證的方法

    SpringBoot使用AOP+注解實(shí)現(xiàn)簡(jiǎn)單的權(quán)限驗(yàn)證的方法

    這篇文章主要介紹了SpringBoot使用AOP+注解實(shí)現(xiàn)簡(jiǎn)單的權(quán)限驗(yàn)證的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • SWT(JFace)體驗(yàn)之Slider,Scale

    SWT(JFace)體驗(yàn)之Slider,Scale

    SWT(JFace)體驗(yàn)之Slider,Scale實(shí)現(xiàn)代碼。
    2009-06-06
  • Spring?Cloud?OpenFeign實(shí)例介紹使用方法

    Spring?Cloud?OpenFeign實(shí)例介紹使用方法

    Spring?Cloud?OpenFeign?對(duì)?Feign?進(jìn)行了二次封裝,使得在?Spring?Cloud?中使用?Feign?的時(shí)候,可以做到使用?HTTP?請(qǐng)求訪問遠(yuǎn)程服務(wù),就像調(diào)用本地方法一樣的,開發(fā)者完全感知不到這是在調(diào)用遠(yuǎn)程訪問,更感知不到在訪問?HTTP?請(qǐng)求
    2022-09-09
  • IDEA中springboot的熱加載thymeleaf靜態(tài)html頁面的方法

    IDEA中springboot的熱加載thymeleaf靜態(tài)html頁面的方法

    這篇文章主要介紹了IDEA中springboot的熱加載thymeleaf靜態(tài)html頁面的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Spring?Cloud?OpenFeign模版化客戶端搭建過程

    Spring?Cloud?OpenFeign模版化客戶端搭建過程

    OpenFeign是一個(gè)顯示聲明式的WebService客戶端。使用OpenFeign能讓編寫Web Service客戶端更加簡(jiǎn)單,這篇文章主要介紹了Spring?Cloud?OpenFeign模版化客戶端,需要的朋友可以參考下
    2022-06-06

最新評(píng)論