最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于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)文章

  • Java圖形用戶界面之列表框

    Java圖形用戶界面之列表框

    列表框通過Swing組件JList產(chǎn)生,其總是在屏幕上占據(jù)固定行數(shù)的空間。這篇文章主要介紹了java圖形用戶界面之列表框的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • java實(shí)現(xiàn)同步的幾種方式(示例詳解)

    java實(shí)現(xiàn)同步的幾種方式(示例詳解)

    這篇文章主要介紹了java實(shí)現(xiàn)同步的幾種方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • Mybatis詳解在注解sql時(shí)報(bào)錯(cuò)的解決方法

    Mybatis詳解在注解sql時(shí)報(bào)錯(cuò)的解決方法

    MyBatis-Plus 是一個(gè) Mybatis 增強(qiáng)版工具,在 MyBatis 上擴(kuò)充了其他功能沒有改變其基本功能,為了簡(jiǎn)化開發(fā)提交效率而存在,本篇文章帶你看看在注解sql時(shí)所報(bào)出的錯(cuò)誤解決
    2022-03-03
  • Java中Map和Set的常見用法舉例

    Java中Map和Set的常見用法舉例

    Map和Set是一種專門用來進(jìn)行搜索的容器或者數(shù)據(jù)結(jié)構(gòu),其具體效率與具體的實(shí)例化子類有關(guān),下面這篇文章主要給大家介紹了關(guān)于Java中Map和Set的常見用法,需要的朋友可以參考下
    2024-04-04
  • java反射調(diào)用方法NoSuchMethodException的解決方案

    java反射調(diào)用方法NoSuchMethodException的解決方案

    這篇文章主要介紹了java反射調(diào)用方法NoSuchMethodException的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java Collection集合的三種遍歷方式詳解

    Java Collection集合的三種遍歷方式詳解

    Collection集合遍歷的方式有三種,迭代器foreach/增強(qiáng)for循環(huán)lambda表達(dá)式,這篇文章主要介紹了Java Collection集合的三種遍歷方式,需要的朋友可以參考下
    2022-11-11
  • springmvc參數(shù)為對(duì)象,數(shù)組的操作

    springmvc參數(shù)為對(duì)象,數(shù)組的操作

    這篇文章主要介紹了springmvc參數(shù)為對(duì)象,數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java使用AES加密和解密的實(shí)例詳解

    Java使用AES加密和解密的實(shí)例詳解

    這篇文章主要介紹了Java使用AES加密和解密的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • mybatis對(duì)于list更新sql語句的寫法說明

    mybatis對(duì)于list更新sql語句的寫法說明

    這篇文章主要介紹了mybatis對(duì)于list更新sql語句的寫法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解SpringBoot如何創(chuàng)建自定義Starter

    詳解SpringBoot如何創(chuàng)建自定義Starter

    Spring Boot的自動(dòng)配置機(jī)制為開發(fā)人員提供了一種輕松集成和配置各種功能的便捷方式,本文將深入探討在Spring Boot中如何創(chuàng)建自定義Starter,為構(gòu)建模塊化且易維護(hù)的應(yīng)用提供有力的支持,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

社旗县| 雅安市| 郯城县| 威信县| 衡阳县| 佛冈县| 栖霞市| 普兰县| 沙坪坝区| 门源| 和静县| 平利县| 青川县| 丹东市| 盈江县| 定远县| 平昌县| 开原市| 信阳市| 漳州市| 祥云县| 中山市| 十堰市| 稷山县| 泽库县| 托克托县| 新源县| 芜湖县| 耒阳市| 长汀县| 湘潭县| 牡丹江市| 虞城县| 黔东| 平谷区| 白城市| 铁岭市| 井研县| 满城县| 尼木县| 临武县|