spring boot 調度任務


1.引入spring boot所依賴的jar包 

 
        
<parent>   
    <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
 
        

 

 
        
2.使用 @Scheduled 標記需要調度的方法
 
        
package com.mouzhi.springboot;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class ScheduledTasks {
    private static final Logger logger = LoggerFactory.getLogger(ScheduledTasks.class);

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime(){
        logger.info("The time is now {}", dateFormat.format(new Date()));
    }
}
 
        

 



3.在項目啟動項配置
@EnableScheduling 確保創建后台任務執行程序。沒有它,沒有任何計划。
 
        
package com.mouzhi.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}
 
        

 



4.@scheduled參數說明

  @Scheduled(fixedRate=2000):上一次開始執行時間點后2秒再次執行;

       @Scheduled(fixedDelay=2000):上一次執行完畢時間點后2秒再次執行;

       @Scheduled(initialDelay=1000, fixedDelay=2000):第一次延遲1秒執行,然后在上一次執行完畢時間點后2秒再次執行;

       @Scheduled(cron="* * * * * ?"):按cron規則執行。

  常用的cron表達式 

  0 10,14,16 * * ? 每天上午10點,下午2點,4點
  0/30 9-17 * * ? 朝九晚五工作時間內每半小時
  0 12 ? * WED 表示每個星期三中午12點
  "0 0 12 * * ?" 每天中午12點觸發
  "0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鍾觸發
  "0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鍾觸發
  "0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鍾觸發
  "0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鍾觸發
  "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發
  "0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發
  "0 15 10 15 * ?" 每月15日上午10:15觸發
  "0 15 10 L * ?" 每月最后一日的上午10:15觸發
  "0 15 10 ? * 6L" 每月的最后一個星期五上午10:15觸發
  "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個星期五上午10:15觸發
  "0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發
  "0 15 10 ? * *" 每天上午10:15觸發
  "0 15 10 * * ?" 每天上午10:15觸發
  "0 15 10 * * ? *" 每天上午10:15觸發
  "0 15 10 * * ? 2005" 2005年的每天上午10:15觸發

  在線Cron表達式生成器:http://cron.qqe2.com/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM