欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何解決SpringBoot定時任務(wù)報錯Unexpected error occurred in scheduled task問題

 更新時間:2024年08月02日 09:04:22   作者:棲遲于一丘  
這篇文章主要介紹了如何解決SpringBoot定時任務(wù)報錯Unexpected error occurred in scheduled task問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

問題

spring boot項目在線上一直正常運(yùn)行沒有錯誤,然后今天發(fā)生了報錯,如圖

這是一個定時器錯誤,發(fā)生這個報錯

主要有兩個原因

  • 定時器編寫的有錯誤
  • @Scheduled注解方式級別高于資源注入級別,導(dǎo)致了資源注入失敗

以下是我的代碼

@RestController
@Slf4j
@SuppressWarnings({"all"})
@CrossOrigin
@RequestMapping("/journal")
@Component
public class JournalController {

	@Autowired
    Journal_timeMapper journal_timeMapper;
    
       /**
     * 每周日將簽到時間數(shù)據(jù)清空
     */
    @Scheduled(cron = "0 0 0 * * SUN")
    public void journaltimeout() {
        List<Journal_time> journal_times = journal_timeMapper.selectList(null);
        for (Journal_time journal_time : journal_times) {
            journal_time.setDay_time("0小時0分鐘");
            journal_time.setWeek_time("0小時0分鐘");
            journal_time.setAll_time("0小時0分鐘");
            journal_time.setWeek_time_desc("第0名");
            journal_timeMapper.updateById(journal_time);
        }
    }


    /**
     * 每天晚上將一天簽到數(shù)據(jù)清空
     */
    @Scheduled(cron = "0 0 0 * * ?")
    public void daytimeout() {
        List<Journal_time> journal_times = journal_timeMapper.selectList(null);
        for (Journal_time journal_time : journal_times) {
            journal_time.setDay_time("0小時0分鐘");
            journal_timeMapper.updateById(journal_time);
        }
    }
}

有一個特別奇怪的點,就是我的daytimeout方法一直在生效,但是journaltimeout卻報錯了,

這都是在一個Controller下面(我直接暈厥)–目前還沒有找到原因,先說解決方法

解決方法

使用ApplicationContextAware,它實現(xiàn)了這個接口的bean,當(dāng)spring容器初始化的時候,會自動的將ApplicationContext注入進(jìn)來

修改后的代碼

@RestController
@Slf4j
@SuppressWarnings({"all"})
@CrossOrigin
@RequestMapping("/journal")
@Component
public class JournalController implements ApplicationContextAware {

  	private static ApplicationContext context;

  	@Override
  	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException 	{
        context = applicationContext;
   	}
    
    public static ApplicationContext getApplicationContext() {
        return context;
    }

    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    
    
       /**
     * 每周日將簽到時間數(shù)據(jù)清空
     */
    @Scheduled(cron = "0 0 0 * * SUN")
    public void journaltimeout() {
        Journal_timeMapper journal_timeMapper = (Journal_timeMapper)this.getBean("journal_timeMapper");
        List<Journal_time> journal_times = journal_timeMapper.selectList(null);
        for (Journal_time journal_time : journal_times) {
            journal_time.setDay_time("0小時0分鐘");
            journal_time.setWeek_time("0小時0分鐘");
            journal_time.setAll_time("0小時0分鐘");
            journal_time.setWeek_time_desc("第0名");
            journal_timeMapper.updateById(journal_time);
        }
    }


    /**
     * 每天晚上將一天簽到數(shù)據(jù)清空
     */
    @Scheduled(cron = "0 0 0 * * ?")
    public void daytimeout() {
        Journal_timeMapper journal_timeMapper = (Journal_timeMapper)this.getBean("journal_timeMapper");
        List<Journal_time> journal_times = journal_timeMapper.selectList(null);
        for (Journal_time journal_time : journal_times) {
            journal_time.setDay_time("0小時0分鐘");
            journal_timeMapper.updateById(journal_time);
        }
    }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中將@Bean方法解析為BeanDefinition詳解

    SpringBoot中將@Bean方法解析為BeanDefinition詳解

    這篇文章主要介紹了SpringBoot中將@Bean方法解析為BeanDefinition詳解,得到的BeanDefinition是ConfigurationClassBeanDefinition類型,會為BeanDefinition設(shè)置factoryMethodName,這意味著當(dāng)實例化這個bean的時候?qū)⒉捎霉S方法,需要的朋友可以參考下
    2023-12-12
  • Java SSM框架如何配置靜態(tài)資源加載

    Java SSM框架如何配置靜態(tài)資源加載

    這篇文章主要介紹了Java SSM框架如何配置靜態(tài)資源加載,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • JAVA Future類的使用詳解

    JAVA Future類的使用詳解

    這篇文章主要介紹了JAVA Future類的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • 使用@RequestParam設(shè)置默認(rèn)可以傳空值

    使用@RequestParam設(shè)置默認(rèn)可以傳空值

    這篇文章主要介紹了使用@RequestParam設(shè)置默認(rèn)可以傳空值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • MyBatis攔截器:給參數(shù)對象屬性賦值的實例

    MyBatis攔截器:給參數(shù)對象屬性賦值的實例

    下面小編就為大家?guī)硪黄狹yBatis攔截器:給參數(shù)對象屬性賦值的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • MapStruct對象映射轉(zhuǎn)換解決Bean屬性拷貝性能問題

    MapStruct對象映射轉(zhuǎn)換解決Bean屬性拷貝性能問題

    無意間看到項目中有小伙伴用到了 MapStruct 來做對象映射轉(zhuǎn)換當(dāng)時我就很好奇,這個是什么框架,能夠解決什么問題,帶著這兩個疑問就有了下面的文章
    2022-02-02
  • 詳解springboot的多種配置方式

    詳解springboot的多種配置方式

    這篇文章主要介紹了springboot的多種配置方式,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot中Dozer的使用小結(jié)

    SpringBoot中Dozer的使用小結(jié)

    dozer是用來兩個對象之間屬性轉(zhuǎn)換的工具,有了這個工具之后,我們將一個對象的所有屬性值轉(zhuǎn)給另一個對象時,就不需要再去寫重復(fù)的set和get方法了,下面介紹下SpringBoot中Dozer的使用,感興趣的朋友一起看看吧
    2022-03-03
  • SpringBoot啟動失敗的原因及其解決方法

    SpringBoot啟動失敗的原因及其解決方法

    對于springboot的啟動失敗,相信大家都有經(jīng)歷,但是為什么會啟動失敗,以及怎么解決都只能通過日志進(jìn)行查看,在這里,我會將常見的springboot啟動失敗的報錯一一展示,需要的朋友可以參考下
    2024-06-06
  • java壓縮多個文件并且返回流示例

    java壓縮多個文件并且返回流示例

    這篇文章主要介紹了java壓縮多個文件并且返回流示例,返回壓縮流主是為了在程序里再做其它操作,需要的朋友可以參考下
    2014-03-03

最新評論