spring-task定時任務動態配置修改執行時間
因專案需要,幾個定時任務需要人為動態設定執行時間,於是乎吧,就查閱相關資料,是可以動態設定的,廢話不多說,直接上程式碼,一目瞭然。
這個是定時任務排程執行器,採用的是註解的方式。首先要動態配置,要設定為@EnableScheduling,這是確保能夠動態,然後實現SchedulingConfigurer,重寫configureTasks方法,接下來就是這個的相關spring配置檔案,要引入下面這個task,不然識別不了啊,配置檔案就是這麼簡單package com.seckill.quartz; import org.springframework.scheduling.Trigger; import org.springframework.scheduling.TriggerContext; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.SchedulingConfigurer; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.scheduling.support.CronTrigger; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by loup on 2017/11/11. */ @Component @EnableScheduling public class DynamicScheduledTask implements SchedulingConfigurer { //時間表達式 每2秒執行一次 private String cron = "0/2 * * * * ?"; private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { scheduledTaskRegistrar.addTriggerTask(new Runnable() { @Override public void run() { //任務邏輯 System.out.println("---------------start-------------------"); System.out.println("動態修改定時任務引數,時間表達式cron為:" + cron); System.out.println("當前時間為:" + sdf.format(new Date())); System.out.println("----------------end--------------------"); } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { CronTrigger cronTrigger = new CronTrigger(cron); Date nextExecDate = cronTrigger.nextExecutionTime(triggerContext); return nextExecDate; } }); } public void setCron(String cron) { this.cron = cron; } }
http://www.springframework.org/schema/task
接下來就是寫測試類,測試可不可行啊<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.seckill.quartz"/> <task:annotation-driven /> </beans>
package com.seckill.quartz; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.io.IOException; /** * Created by loup on 2017/11/11. */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"classpath*:/conf/spring-quartz.xml"}) public class QuartzTest { @Autowired private DynamicScheduledTask dynamicScheduledTask; @Test public void test1(){ try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } dynamicScheduledTask.setCron("0/10 * * * * ?"); try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } } }
執行測試類,檢視結果,達到效果,親測可用
相關推薦
spring-task定時任務動態配置修改執行時間
因專案需要,幾個定時任務需要人為動態設定執行時間,於是乎吧,就查閱相關資料,是可以動態設定的,廢話不多說,直接上程式碼,一目瞭然。 package com.seckill.quartz; import org.springframework.scheduling.Trig
spring task 定時任務 配置
<task:executor id="executor" pool-size="10"/> <task:scheduler id="scheduler" pool-size="10"/> <task:annotation-dri
Spring @Scheduled定時任務動態修改cron引數
Spring框架自3.0版本起,自帶了任務排程功能,好比是一個輕量級的Quartz,而且使用起來也方便、簡單,且不需要依賴其他的JAR包。秉承著Spring的一貫風格,Spring任務排程的實現同時支援註解配置和XML配置兩種方式。 再來談談變態的專案需求:我們正在做一個智慧數字電錶的資料採集專案,
Spring Task 定時任務
zh-cn 啟動 功能 創建 content p s 調用 can oca 所謂定時任務。就是依據我們設定的時間定時運行任務,就像定時發郵件一樣,設定時間到了。郵件就會自己主動發送。 在Spring大行其道的今天,Spring也提供了其定時任務功能,Spring
spring + quartz定時任務,以及修改定時任務
blog public schedule col ping ppi string time 找到 spring4+quartz2.2.3,定時任務弄好了,修改定時任務沒折騰起,沒找到合適的解決方案。 最終使用庫spring-context-support 3.2.17.RE
Quartz cron 表示式(linux 定時器,java 定時任務,spring task定時任務)
原文地址:https://blog.csdn.net/feng27156/article/details/39293403 Quartz cron 表示式的格式十分類似於 UNIX cron 格式,但還是有少許明顯的區別。區別之一就是 Quartz 的格式向下支援到秒級別的計劃,而 UNIX cron 計劃
spring quartz定時任務整合配置(ssm,ssh專案都適用)
轉自:https://www.tpyyes.com/a/javaweb/2017/0310/79.html spring整合配置quartz定時器任務非常的簡單,本專案是基於ssm maven專案的整合,如果你是ssh專案,請下載spring-context-support-4
springboot 定時任務(動態新增修改 )
考慮Scheduled 註解 動態改變cron 表示式來達到修改任務的執行時間 (例如現在有個定時任務1分鐘執行一次 ,當我通過呼叫介面時 會修改為定時任務 5分鐘執行)無奈 cron 的表示式的值只能為常量實現方式一 未實現動態新增實現 SchedulingConfig
基於springboot ThreadPoolTaskScheduler類實現定時任務動態新增修改
需求:有不定個的定時任務模板需要建立,定時任務在執行過程中,激發時間等屬性可能發生修改. import org.springframework.beans.factory.annotation.Autowired; import org.springframework.b
spring task 定時任務 註解方式 demo
類: package com.task; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.ster
Spring task 定時任務的兩種用法(時間設定在.xml裡或者在 @註解裡)
spring 4.1.7jdk1.81.時間設定在javaBean的@註解裡spring-task.xml:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframe
Maven專案啟動自動啟動執行Spring的Task定時任務
1、引入Spring相關jar包 2、定時任務類 package taskJob; public class TaskDemo { public void test(){ System.out.println("現在是北京時間:XXX,開始觸發定時任務..."); } } 3
SpringBoot定時任務動態修改cron表示式改變執行週期
一、場景引入 前不久做過一個根據下載指令定時下載檔案到伺服器的需求。輪詢下載的週期需要根據下載任務量的大小動態修改,下載任務密集的時候就週期縮小,下載任務少量時就擴大週期時間。java本身和第三方開源框架Spring共
2. Spring Boot 定時任務升級篇(動態修改cron引數)
【文章出自:http://412887952-qq-com.iteye.com/blog/2367537】 需求緣起:在釋出了《Spring Boot定時任務升級篇》之後得到不少反饋,其中有一個反饋就是如何動態修改cron引數呢?那麼我們一起看看具體怎麼實現,先看下
Spring+Quartz實現定時任務的配置方法
detail 包含 範例 empty beans ref tail 可選 creat 1、Scheduler的配置 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&g
spring多個定時任務quartz配置
ram 至少 utf-8 list 表達 lse 第一個 span cron spring多個定時任務quartz配置 1 <?xml version=”1.0″ encoding=”UTF-8″?> 2 <beans xmlns=”http:/
一張圖讓你秒懂Spring @Scheduled定時任務的fixedRate,fixedDelay,cron執行差異
https://blog.csdn.net/applebomb/article/details/52400154 看字面意思容易理解,但是任務執行長度超過週期會怎樣呢? 不多說,直接上圖: 測試程式碼: import java.text.DateFormat; imp
Spring設定定時任務執行時間的規則說明
一、各域說明 欄位域 秒 分 時 日 月 星期(7為週六) 年(可選) 取值範圍 0-59 0-59 0-23 1-31 1-12或JAN–DEC 1-7或SUN–SAT 1970–
java.util.Timer、Quartz與Spring task定時器任務的幾種實現方法
轉載:https://www.jb51.net/article/106445.htm 一.分類 從實現的技術上來分類,目前主要有三種技術(或者說有三種產品): 1.Java自帶的java.util.Timer類,這個類允許你排程一個java.util.TimerTask任務。使用這種方式
Spring的定時任務@Scheduled,部署後執行載入兩次
最近公司讓做定時抓取新聞的一個定時,一切都部署好後,發現每次都載入了兩次。配置檔案都檢查了,也沒發現問題。 1.註解的配置 <!-- 啟用註解定時 --> <task:annotation-driven scheduler="mySchedul