亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Springboot執行多個定時任務并動態獲取定時任務信息的示例分析

發布時間:2021-05-22 11:13:07 來源:億速云 閱讀:348 作者:小新 欄目:編程語言

小編給大家分享一下基于Springboot執行多個定時任務并動態獲取定時任務信息的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

簡介

因為一些業務的需要所有需要使用多個不同的定時任務,并且每個定時任務中的定時信息是通過數據庫動態獲取的。下面是我寫的使用了Springboot+Mybatis寫的多任務定時器。

主要實現了以下功能:

1、同時使用多個定時任務
2、動態獲取定時任務的定時信息

說明

因為我們需要從數據庫動態的獲取定時任務的信息,所以我們需要集成 SchedulingConfigurer 然后重寫 configureTasks 方法即可,調用不同的定時任務只需要通過service方法調用不用的實現返回對應的定時任務信息。有多少個定時任務就重寫多少個該方法(最好創建不同的類)。然后直接在application中啟動即可。

SpringApplication-啟動類

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);
  }

}

動態獲取定時任務信息

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;
}

定時任務

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.添加任務內容(Runnable),可以為方法
          () -> Sytem.out.println("定時任務1"),
          //2.設置執行周期(Trigger)
          triggerContext -> {
            //2.1 從數據庫獲取執行周期,在這里調用不同的方法返回不同的定時任務信息
            String cron = controllerService.getSchedultaskForElasticsearch();
            System.out.println("controllerService.getSchedultaskForElasticsearch()");
            System.out.println(cron);
            //2.2 合法性校驗.
            if (StringUtils.isEmpty(cron)) {
              // Omitted Code ..
              LOGGER.error("計劃任務為空");
            }
            //2.3 返回執行周期(Date)
            return new CronTrigger(cron).nextExecutionTime(triggerContext);
          }
      );
    }catch (Exception e){
      String ex = exceptionLoggingUtil.exceptionPrint(e);
      LOGGER.info(ex);
    }

  }
}

springboot是什么

springboot一種全新的編程規范,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

以上是“基于Springboot執行多個定時任務并動態獲取定時任務信息的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浠水县| 镇平县| 莆田市| 科技| 体育| 永善县| 仁怀市| 广德县| 军事| 进贤县| 敦化市| 金华市| 高雄县| 宝山区| 唐河县| 临高县| 棋牌| 全椒县| 南澳县| 靖西县| 临泽县| 门头沟区| 海伦市| 敖汉旗| 芮城县| 饶阳县| 宁海县| 宝清县| 银川市| 当雄县| 翁源县| 讷河市| 昌都县| 肥西县| 曲松县| 罗定市| 视频| 新建县| 澄城县| 四平市| 通江县|