spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實現(xiàn)定時任務(wù)
在 Spring Boot 中,可以使用 @Scheduled
注解和 TaskScheduler
接口來實現(xiàn)定時任務(wù)。以下是關(guān)于如何在 Spring Boot 中創(chuàng)建定時任務(wù)的詳細說明:
- 添加依賴
在 pom.xml
文件中添加 spring-boot-starter
依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
- 啟用定時任務(wù)
在 Spring Boot 主類上添加 @EnableScheduling
注解,以啟用定時任務(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)建定時任務(wù)
使用 @Scheduled
注解創(chuàng)建定時任務(wù)。以下是一個簡單的定時任務(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()); } }
在這個示例中,我們創(chuàng)建了三個定時任務(wù):
fixedRateTask
:使用fixedRate
屬性,每隔 5000 毫秒(5 秒)執(zhí)行一次。fixedDelayTask
:使用fixedDelay
屬性,在上一次任務(wù)完成后等待 5000 毫秒(5 秒)再執(zhí)行。cronTask
:使用cron
屬性,根據(jù) Cron 表達式執(zhí)行任務(wù)。在這個例子中,任務(wù)將在每分鐘的整數(shù)秒執(zhí)行。
- 使用
TaskScheduler
接口
除了使用 @Scheduled
注解,你還可以使用 TaskScheduler
接口來創(chuàng)建定時任務(wù)。以下是一個使用 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; } }
在這個示例中,我們創(chuàng)建了一個 TaskScheduler
Bean,配置了一個線程池大小為 5 的 ThreadPoolTaskScheduler
。然后,我們創(chuàng)建了一個簡單的 Runnable
任務(wù),并使用 ScheduledTaskRegistrar
將任務(wù)注冊到 TaskScheduler
。這個任務(wù)將以固定的速率(每隔 5000 毫秒)執(zhí)行。
這就是在 Spring Boot 中創(chuàng)建定時任務(wù)的詳細說明。你可以根據(jù)自己的需求調(diào)整任務(wù)的執(zhí)行頻率和邏輯。
到此這篇關(guān)于spring boot 使用 @Scheduled 注解和 TaskScheduler 接口實現(xiàn)定時任務(wù)的文章就介紹到這了,更多相關(guān)spring boot 定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中的動態(tài)數(shù)組和棧Vector Stack使用區(qū)別介紹
這篇文章主要為大家介紹了Java中的動態(tài)數(shù)組和棧Vector Stack使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10Spring Cloud實現(xiàn)提供API給客戶端的方法詳解
這篇文章主要給大家介紹了關(guān)于Spring Cloud實現(xiàn)提供API給客戶端的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01Springboot處理跨域的實現(xiàn)方式(附Demo)
這篇文章主要介紹了Springboot處理跨域的實現(xiàn)方式(附Demo),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04