springboot定時任務(wù)不起作用問題及解決
springboot定時任務(wù)不起作用
今天再寫一個定時任務(wù)時,發(fā)現(xiàn)所有配置都沒問題,但定時任務(wù)就是不執(zhí)行,通過各種對比測試排除法,終于找到問題所在。
下面看一下啟動類
@SpringBootApplication
@ComponentScan(value = "com.timer.timer_demo",lazyInit = true)
@EnableScheduling
public class TimerDemoApplication {
public static void main(String[] args) {
SpringApplication.run(TimerDemoApplication.class, args);
}
}啟動類上有三個注解
其中有個注解是有個lazyInit屬性,是何意思呢?
ApplicationContext實現(xiàn)的默認(rèn)行為就是在啟動服務(wù)器時將所有singleton bean提前進(jìn)行實例化(也就是依賴注入)。
提前實例化意味著作為初始化過程的一部分,applicationContext實例會創(chuàng)建并配置所有的singleton bean。
通常情況下這是一件好事,因為這樣在配置中的任何錯誤就會被立刻實現(xiàn)。
延時加載,設(shè)置為lazy = true 的bean將不會在ApplicationContext啟動時提前被實例化,而是第一次向容器通過getBean索取bean時實例化的。
這段解釋也就是說:
這個屬性為true時,bean類將延遲加載,那樣的話定時任務(wù)類沒在啟動時加載進(jìn)去,自然就沒法執(zhí)行定時任務(wù),此時怎么解決?
總不能把之前啟動類的這個屬性去掉吧,在啟動類上添加這個得前輩大神肯定有自己考慮,不動為妙,那就指定某些類不使用延遲加載。
代碼如下:
@Component
@Lazy(false)
public class MyTimerTest {
//表示每隔1秒
@Scheduled(fixedRate=1000)
public void clearData(){
System.out.println("定時任務(wù)"+System.currentTimeMillis());
}
}想讓哪個類不延遲加載就添加@Lazy(false) 注解即可
好了,springboot的延遲加載坑就解決了
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java的url方式、本地方式獲取json文件內(nèi)容
這篇文章給大家分享了java的url方式、本地方式獲取json文件內(nèi)容的實例代碼,有需要的朋友參考學(xué)習(xí)下。2018-07-07
springboot啟動報錯:application?startup?failed問題
這篇文章主要介紹了springboot啟動報錯:application?startup?failed問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
SpringBoot Security安裝配置及Thymeleaf整合
這篇文章主要介紹了SpringBoot Security安裝配置及Thymeleaf整合,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12
java實現(xiàn)后臺數(shù)據(jù)顯示在前端
這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)后臺數(shù)據(jù)顯示在前端,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-02-02
單例模式垃圾回收_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了單例模式垃圾回收的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08

