中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

使用Spring怎么動態修改時間參數

發布時間:2020-12-05 15:14:09 來源:億速云 閱讀:306 作者:Leah 欄目:編程語言

使用Spring怎么動態修改時間參數?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

spring實現定時任務的方式有三種,分別是java自帶的timer類、spring task和quartz三種。

  本文只介紹spring自帶的task和第三方quartz。spirng task可以將它比作一個輕量級的Quartz,使用起來非常簡單,除spring相關的包外不需要額外的包,而且支持注解和配置文件兩種。接著直接演示spring task注解實現方式。

  首先,創建任務類,如下:

@Component
public class MyScheduler {
  int i =0;
  public void run(){
    i++;
    // 任務邏輯  
    System.out.println("第"+(i)+"次開始執行操作... " +"時間:【" 
    + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").format(new Date()) 
    + "】"); 
  }
}

  接著,在spring的配置文件中添加命名空間及描述:

 <beans xmlns="http://www.springframework.org/schema/beans" 
  xmlns:task="http://www.springframework.org/schema/task"  
  ...... 
  xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd"> 

  最后,spring配置文件來一發:

<task:scheduled-tasks>  
    <task:scheduled ref="myScheduler" method="run" cron="0/5 * * * * &#63;"/>  
</task:scheduled-tasks> 

  大功告成,可以用了,但是感覺很麻煩,也很死板,也就用來寫寫demo,那么就稍微改造一下吧。

@Service
@Lazy(false)
@EnableScheduling
public class MyScheduler extends BaseService implements SchedulingConfigurer{
  public static String cron = "0/2 * * * * &#63;";
  int i =0;
  @Override
  public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    taskRegistrar.addTriggerTask(new Runnable() {
      @Override
      public void run() {
        i++;
        // 需要實現的任務邏輯  
        logger.info("第"+(i)+"次開始執行操作... " +"時間:【" 
        + new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").format(new Date()) 
        + "】"); 
      }
    }, new Trigger(){ 
      @Override 
      public Date nextExecutionTime(TriggerContext triggerContext) { 
        //任務觸發,可修改任務的執行周期  
        CronTrigger trigger = new CronTrigger(cron); 
        Date nextExec = trigger.nextExecutionTime(triggerContext); 
        return nextExec;  
      } 
    }); 
  }
}

  實現SchedulingConfigurer接口的configureTasks方法,如果直接啟動項目,就可以實現每秒5次該方法的執行了,一旦cron參數被修改,ScheduledTaskRegistrar偵測到后會重新創建一個觸發器來實現新的cron表達式任務,這就解決了動態調度定時任務的問題了,而之前spring配置文件中關于任務類的內容也可以刪除了。另外,你可以修改spring task的任務池來增加可同時存在的任務數量,如下:

<task:executor id="executor" pool-size="10"/> 
  <task:scheduler id="scheduler" pool-size="10"/>
<task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true"/> 

  我們在web項目中有時候需要手動關停定時任務,或者需要立即執行定時任務具有的功能,這時的spring task就力不從心了,這也是它輕量級的原因,使用簡單,但提供的功能不夠強大,這時候就輪到Quartz出場了。Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,它可以與J2EE與J2SE應用程序相結合也可以單獨使用。Quartz可以用來創建簡單或為運行十個,百個,甚至是好幾萬個Jobs這樣復雜的程序。Jobs可以做成標準的Java組件或 EJBs。

  各位有興趣可以去參考jeecg框架的定時任務開發,它對其進行了整合,使用起來及其方便。

使用Spring怎么動態修改時間參數

  接著我們自己來整合Quartz,實現動態定時任務。先理清思路,1.導入jar包;2.配置spring文件;3.編寫任務代碼。

  首先導入需要的jar包,我這里使用spring 4.1.9版本及Quartz 2.2.7,對了,spring 3.1.x 以上才支持 Quartz 2.x 的jar包,原因就不細說了,各位自行百度。

看完上述內容,你們掌握使用Spring怎么動態修改時間參數的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

治县。| 焉耆| 武穴市| 天门市| 克东县| 湖南省| 西充县| 岳池县| 三穗县| 彭州市| 博爱县| 吉安市| 成武县| 牙克石市| 手机| 岳西县| 六枝特区| 启东市| 安顺市| 山阴县| 大足县| 外汇| 桦甸市| 阳西县| 仲巴县| 天峻县| 哈尔滨市| 新乡县| 会东县| 南溪县| 绵竹市| 宁远县| 常德市| 黄梅县| 黄山市| 开化县| 青冈县| 邢台市| 合作市| 垫江县| 霍林郭勒市|