spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實(shí)現(xiàn)定時(shí)任務(wù)
在 Spring Boot 中,可以使用 @Scheduled 注解和 TaskScheduler 接口來實(shí)現(xiàn)定時(shí)任務(wù)。以下是關(guān)于如何在 Spring Boot 中創(chuàng)建定時(shí)任務(wù)的詳細(xì)說明:
- 添加依賴
在 pom.xml 文件中添加 spring-boot-starter 依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>- 啟用定時(shí)任務(wù)
在 Spring Boot 主類上添加 @EnableScheduling 注解,以啟用定時(shí)任務(wù)支持:
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, args);
}
}- 創(chuàng)建定時(shí)任務(wù)
使用 @Scheduled 注解創(chuàng)建定時(shí)任務(wù)。以下是一個(gè)簡單的定時(shí)任務(wù)示例:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Component
public class ScheduledTask {
@Scheduled(fixedRate = 5000)
public void fixedRateTask() {
System.out.println("Fixed rate task executed at " + LocalDateTime.now());
}
@Scheduled(fixedDelay = 5000)
public void fixedDelayTask() {
System.out.println("Fixed delay task executed at " + LocalDateTime.now());
}
@Scheduled(cron = "0 * * * * ?")
public void cronTask() {
System.out.println("Cron task executed at " + LocalDateTime.now());
}
}在這個(gè)示例中,我們創(chuàng)建了三個(gè)定時(shí)任務(wù):
fixedRateTask:使用fixedRate屬性,每隔 5000 毫秒(5 秒)執(zhí)行一次。fixedDelayTask:使用fixedDelay屬性,在上一次任務(wù)完成后等待 5000 毫秒(5 秒)再執(zhí)行。cronTask:使用cron屬性,根據(jù) Cron 表達(dá)式執(zhí)行任務(wù)。在這個(gè)例子中,任務(wù)將在每分鐘的整數(shù)秒執(zhí)行。
- 使用
TaskScheduler接口
除了使用 @Scheduled 注解,你還可以使用 TaskScheduler 接口來創(chuàng)建定時(shí)任務(wù)。以下是一個(gè)使用 TaskScheduler 的示例:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import java.time.LocalDateTime;
@Configuration
public class SchedulerConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(5);
return taskScheduler;
}
@Bean
public Runnable exampleTask() {
return () -> System.out.println("Task executed at " + LocalDateTime.now());
}
@Bean
public ScheduledTaskRegistrar scheduledTaskRegistrar(TaskScheduler taskScheduler, Runnable exampleTask) {
ScheduledTaskRegistrar taskRegistrar = new ScheduledTaskRegistrar();
taskRegistrar.setTaskScheduler(taskScheduler);
taskRegistrar.addFixedRateTask(exampleTask, 5000);
return taskRegistrar;
}
}在這個(gè)示例中,我們創(chuàng)建了一個(gè) TaskScheduler Bean,配置了一個(gè)線程池大小為 5 的 ThreadPoolTaskScheduler。然后,我們創(chuàng)建了一個(gè)簡單的 Runnable 任務(wù),并使用 ScheduledTaskRegistrar 將任務(wù)注冊到 TaskScheduler。這個(gè)任務(wù)將以固定的速率(每隔 5000 毫秒)執(zhí)行。
這就是在 Spring Boot 中創(chuàng)建定時(shí)任務(wù)的詳細(xì)說明。你可以根據(jù)自己的需求調(diào)整任務(wù)的執(zhí)行頻率和邏輯。
到此這篇關(guān)于spring boot 使用 @Scheduled 注解和 TaskScheduler 接口實(shí)現(xiàn)定時(shí)任務(wù)的文章就介紹到這了,更多相關(guān)spring boot 定時(shí)任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JMagick實(shí)現(xiàn)基本圖像處理的類實(shí)例
這篇文章主要介紹了JMagick實(shí)現(xiàn)基本圖像處理的類,實(shí)例分析了java圖像處理的相關(guān)技巧,需要的朋友可以參考下2015-06-06
詳解SpringBoot中的tomcat優(yōu)化和修改
這篇文章主要介紹了詳解SpringBoot中的tomcat優(yōu)化和修改,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
java中ReentrantLock實(shí)現(xiàn)公平鎖和非公平鎖
在Java里,公平鎖和非公平鎖是多線程編程中用于同步的兩種鎖機(jī)制,它們的主要差異在于獲取鎖的順序規(guī)則,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下2025-12-12
Java String創(chuàng)建對象實(shí)例解析
這篇文章主要介紹了Java String創(chuàng)建對象實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
java -jar設(shè)置添加啟動參數(shù)實(shí)現(xiàn)方法
這篇文章主要介紹了java -jar設(shè)置添加啟動參數(shù)實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02

