定時(shí)任務(wù)@Scheduled用法及其參數(shù)使用
定時(shí)任務(wù)@Scheduled用法及參數(shù)
@Scheduled是Spring框架中的一個(gè)注解,用于標(biāo)記一個(gè)方法為定時(shí)任務(wù)。
當(dāng)使用@Scheduled注解時(shí),Spring會(huì)自動(dòng)創(chuàng)建一個(gè)定時(shí)任務(wù)的執(zhí)行器(Scheduler),并在指定的時(shí)間間隔內(nèi)執(zhí)行被標(biāo)記的方法。
使用@Scheduled注解時(shí),可以通過(guò)設(shè)置不同的屬性來(lái)定義定時(shí)任務(wù)的行為,例如:
fixedRate:固定頻率執(zhí)行任務(wù),表示每隔指定的時(shí)間間隔執(zhí)行一次任務(wù)。fixedDelay:固定延遲執(zhí)行任務(wù),表示在上一次任務(wù)執(zhí)行完成后,等待指定的時(shí)間間隔再執(zhí)行下一次任務(wù)。initialDelay:初始延遲時(shí)間,表示在第一次執(zhí)行任務(wù)之前的等待時(shí)間。cron:使用Cron表達(dá)式定義任務(wù)的執(zhí)行時(shí)間,可以更靈活地控制任務(wù)的執(zhí)行時(shí)間。
具體實(shí)現(xiàn):
/**
* 定時(shí)任務(wù)001:@Scheduled
* springboot自帶的簡(jiǎn)易定時(shí)任務(wù)實(shí)現(xiàn)
*
* @author zhupeng
* @Date 2022/1/7 9:53 AM
*/
@Component
public class ScheduleTask {
private String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
// 任務(wù)間隔3s執(zhí)行依次【不包括任務(wù)執(zhí)行時(shí)間】,延遲1s后執(zhí)行
@Scheduled(initialDelay = 1000, fixedDelay = 3000)
public void fixedDelay() {
System.out.println("fixedDelay:" + this.date);
}
// 每隔間隔3s執(zhí)行依次【包括任務(wù)執(zhí)行時(shí)間】
@Scheduled(fixedRate = 3000)
public void fixedRate() {
System.out.println("fixedRate:" + this.date);
}
// cron表達(dá)式,Quartz更詳細(xì)
@Scheduled(cron = "*/5 * * * * *")
public void cron() {
System.out.println("cron:" + this.date);
}
}
Spring框架中@Scheduled注解失效問(wèn)題
問(wèn)題描述
在Spring框架的Web項(xiàng)目中,有一個(gè)業(yè)務(wù)功能需要每天執(zhí)行一次,使用了@Scheduled注解執(zhí)行定時(shí)任務(wù),但是出現(xiàn)了定時(shí)任務(wù)不執(zhí)行的情況
嘗試的方式
類上加@EnableScheduling注解、加實(shí)現(xiàn)SchedulingConfigurer接口的配置類、修改cron表達(dá)式
都失敗了
最終查到的解決方式
在Spring的配置文件中,添加配置:
- 1.加命名空間
xmlns添加:
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.3.xsd"
- 2.啟動(dòng)注解驅(qū)動(dòng)
<task:annotation-driven scheduler="dataScheduler"/>
- 3.開啟任務(wù)調(diào)度器,并配置線程池大小
<task:scheduler id="dataScheduler" pool-size="5"/>
- 4.然后就可以使用
@Scheduled注解了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
面試必問(wèn)的Java 運(yùn)行時(shí)架構(gòu)JVM詳解
本文主要介紹了Java虛擬機(jī)(JVM的結(jié)構(gòu)、運(yùn)行時(shí)數(shù)據(jù)區(qū)、執(zhí)行引擎等相關(guān)知識(shí),JVM主要由類加載器、運(yùn)行時(shí)數(shù)據(jù)區(qū)、執(zhí)行引擎和本地接口等組成,感興趣的朋友跟隨小編一起看看吧2026-04-04
Mybatis實(shí)現(xiàn)批量更新數(shù)據(jù)(批量update)
本文介紹了MyBatis批量更新數(shù)據(jù)的兩種方案,方案一使用foreach標(biāo)簽拼接多條update語(yǔ)句,通過(guò)在數(shù)據(jù)庫(kù)連接URL中指定allowMultiQueries參數(shù)值為true來(lái)支持多條語(yǔ)句的執(zhí)行,提高效率;方案二拼接成一條SQL,但SQL語(yǔ)句會(huì)非常復(fù)雜且難以閱讀,不推薦使用2026-04-04
解決SpringBoot下Redis序列化亂碼的問(wèn)題
這篇文章主要介紹了解決SpringBoot下Redis序列化亂碼的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
SpringBoot的內(nèi)嵌和外置tomcat的實(shí)現(xiàn)方式
本文主要介紹了在Spring Boot中定制和修改Servlet容器的配置,包括內(nèi)嵌式和外置式Servlet容器的配置方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-11-11
Spring實(shí)戰(zhàn)之使用Resource作為屬性操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之使用Resource作為屬性,結(jié)合實(shí)例形式分析了spring載人Resource作為屬性相關(guān)配置與使用技巧,需要的朋友可以參考下2020-01-01

