最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springBoot項目集成quartz開發(fā)定時任務(wù)案例及注意事項

 更新時間:2022年06月17日 10:18:38   作者:舉杯慶祝  
這篇文章主要介紹了springBoot項目集成quartz開發(fā)定時任務(wù)案例及注意事項,這些功能的主要接口(API)是Scheduler接口。它提供了簡單的操作,例如:將任務(wù)納入日程或者從日程中取消,開始/停止/暫停日程進(jìn)度,需要的朋友可以參考下

quartz下載、安裝

Quartz是完全由java開發(fā)的一個開源的任務(wù)日程管理系統(tǒng),任務(wù)進(jìn)度管理器就是一個在預(yù)先確定的時間到達(dá)時,負(fù)責(zé)執(zhí)行(或者通知)一段程序或功能的系統(tǒng),即定時執(zhí)行某個任務(wù)。
Quartz用一個小Java庫發(fā)布文件(.jar文件),這個庫文件包含了所有Quartz核心功能。這些功能的主要接口(API)是Scheduler接口。它提供了簡單的操作,例如:將任務(wù)納入日程或者從日程中取消,開始/停止/暫停日程進(jìn)度。

quartz服務(wù)涉及的11張表

上圖是quartz服務(wù)涉及的11張表, 下面這個圖是maven中引入的quartz依賴包

maven中引入quartz依賴

Quartz的jar包下載、SpringBoot項目整合Quartz安裝及具體的使用方法本站已經(jīng)有很多,但是還是建議參考W3CSchool的官方文檔 Quartz快速入門指南

官方文檔地址: https://www.w3cschool.cn/quartz_doc/quartz_doc-2put2clm.html

實戰(zhàn)案例

假如我開發(fā)環(huán)境已經(jīng)配置好,我們只關(guān)注具體業(yè)務(wù)實現(xiàn)。實際上做項目的過程中也很少會讓開發(fā)自己去集成組件,通常都是開發(fā)環(huán)境已經(jīng)配置好了,如果需要配置的話還是像上面說的,看官方文檔吧。
現(xiàn)在有個需求是每天凌晨把某個登記表A的信息篩選后刷到B表中,先貼上代碼:

//RefreshTableJob.java的代碼
@Component("RefreshTableJob")
public class RefreshTableJob {
    private static final Logger logger = LoggerFactory.getLogger(RefreshIdleAssetJob.class);
    public void PullData(){
        try{
            SpringUtils.getBean(IassetService.class).initIdleAssetList();
        } catch (RestClientResponseException e) {
            logger.error("數(shù)據(jù)同步失敗,error:"+e.getMessage());
        }catch (Exception e) {
            e.printStackTrace();
            logger.error("數(shù)據(jù)同步失敗,error:"+e.getMessage());
        }
    }
}
//assetServiceImpl.java的代碼 實現(xiàn)了IassetService接口
@Service
public class IdleAssetServiceImpl implements IaAssetService{
@Resource
private IdleAssetMapper idleAssetMapper;
/**
 * 拉取增量閑置資產(chǎn)數(shù)據(jù)
 */
@Override
@Transactional
public void initIdleAssetList(){
    // 處理閑置數(shù)據(jù)
    List<HashMap> initList = idleAssetMapper.selectIdleList(null);
    while (initList != null && initList.size() > 0){
        for(HashMap data : initList){
            HashMap paramMap = new HashMap();
            String uuid = UUID.randomUUID().toString().trim();
            paramMap.put("UPDATETIME", DateUtils.getNowDate());
            paramMap.put("UPDATEUSER", "");
            paramMap.put("STATUS", data.get("A_STATUS"));
            // 。。。。這里省略了很多字段
            paramMap.put("USAGESECRET", data.get("A_USAGESECRET"));
            paramMap.put("BELONGENTITYID", data.get("A_ID"));
            idleAssetMapper.saveIdleAsset(paramMap);
        }
        initList = idleAssetMapper.selectEquipIdleList(null);
    }
    logger.info("設(shè)備儀器表閑置資產(chǎn)數(shù)據(jù)獲取完成");

RefreshTableJob.java就是定時任務(wù)執(zhí)行的入口,它的主要邏輯是調(diào)用service實現(xiàn)類中的initIdleAssetList方法,調(diào)用Mybatis的mapper文件查詢數(shù)據(jù)庫表A的增量數(shù)據(jù),循環(huán)處理后刷入B表,配置的cron表達(dá)式是 0 0 2 1/1 * ? * (每天兩天執(zhí)行一次)。

常見問題及解決方案

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.bjsasc.openshare.idleasset.service.IassetService' available
原因:定時任務(wù)類RefreshTableJob中找不到IassetService這個類
解決方法:
在系統(tǒng)的啟動類的main方法中加上這么一行配置信息,僅本地調(diào)試的時候加哦,這行代碼不用提交,生產(chǎn)環(huán)境沒有這個問題,不知道為啥子
System.setProperty(“spring.devtools.restart.enabled”, “false”);

在這里插入圖片描述

java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request. 直接原因:我在插入B表的時候看到有個創(chuàng)建人字段,想獲取系統(tǒng)中的當(dāng)前登錄用戶信息,結(jié)果獲取不到request相關(guān)對象

在這里插入圖片描述

相信查過資料的朋友看到了網(wǎng)上說的設(shè)置request子線程共享或者重新實現(xiàn)RequestAttributes接口的方式了,這倆方案只是屏蔽報錯的,如果只是想屏蔽報錯,那直接刪掉出錯位置的代碼或者寫個自定義接口實現(xiàn)類判斷一下requestAttributes 為空時new一個就完了。

那怎么獲取當(dāng)前登錄用戶呢?
答案是獲取不到,定時任務(wù)可以在不登陸系統(tǒng)的情況下運行,對于在controller層調(diào)用service方法(WEB訪問方式)中使用RequestContextHolder或者WebApplicationContext對象獲取上下文的情況完全沒有問題。但是除了controller層外,調(diào)度任務(wù)等也可能調(diào)用service層的方法(非web方式根本不存在request對象),這種情況下不能使用上下文對象獲取其中的用戶信息。
如果你非要娶,可以提前把用戶登錄信息存到redis或者其他渠道,看起來有點麻煩,真有這樣的需求嗎,showme探討一下。

到此這篇關(guān)于springBoot項目集成quartz開發(fā)定時任務(wù)案例及注意事項的文章就介紹到這了,更多相關(guān)springBoot集成quartz開發(fā)定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何解決Eclipse找不到或無法加載主類問題

    如何解決Eclipse找不到或無法加載主類問題

    這篇文章主要介紹了如何解決Eclipse找不到或無法加載主類問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • java基于反射得到對象屬性值的方法

    java基于反射得到對象屬性值的方法

    這篇文章主要介紹了java基于反射得到對象屬性值的方法,結(jié)合實例形式分析了java基于反射獲取對象屬性值的相關(guān)實現(xiàn)方法與操作技巧,需要的朋友可以參考下
    2017-03-03
  • java FastJson的簡單用法

    java FastJson的簡單用法

    FastJson是阿里的開源JSON解析庫,可以解析JSON格式的字符串,支持將Java Bean序列化為JSON字符串,也可以從JSON字符串反序列化到JavaBean,這里我介紹一下FastJson的使用,感興趣的朋友一起看看吧
    2021-09-09
  • idea切換分支的時候,忽略一些無用的修改設(shè)置

    idea切換分支的時候,忽略一些無用的修改設(shè)置

    這篇文章主要介紹了idea切換分支的時候,忽略一些無用的修改操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 一文詳解Maven的setting文件

    一文詳解Maven的setting文件

    maven?是目前java?常見的一款包管理工具,通過?maven?我們可以很方便的對項目進(jìn)行編譯、打包、部署等操作,本文將詳細(xì)帶大家了解一下Maven?setting文件,需要的朋友可以參考下
    2024-02-02
  • spring mvc rest 接口選擇性加密解密詳情

    spring mvc rest 接口選擇性加密解密詳情

    這篇文章主要介紹了spring mvc rest 接口選擇性加密解密詳情,spring mvc rest接口以前是采用https加密的,但是現(xiàn)在需要更加安全的加密。而且不是對所有的接口進(jìn)行加密,是對部分接口進(jìn)行加密,接口返回值進(jìn)行解密
    2022-07-07
  • Java集合中的List超詳細(xì)講解

    Java集合中的List超詳細(xì)講解

    本文詳細(xì)介紹了Java集合框架中的List接口,包括其在集合中的位置、繼承體系、常用操作和代碼示例,以及不同實現(xiàn)類(如ArrayList、LinkedList和Vector)的底層原理和應(yīng)用場景,感興趣的朋友一起看看吧
    2025-02-02
  • Redis實現(xiàn)延遲隊列的全流程詳解

    Redis實現(xiàn)延遲隊列的全流程詳解

    Redisson是Redis服務(wù)器上的分布式可伸縮Java數(shù)據(jù)結(jié)構(gòu),這篇文中主要為大家介紹了Redisson實現(xiàn)的優(yōu)雅的延遲隊列的方法,需要的可以參考一下
    2023-03-03
  • maven一鍵刪除倉庫無用文件的實現(xiàn)

    maven一鍵刪除倉庫無用文件的實現(xiàn)

    大家都知道我們在使用Maven的時候,會下載一堆無用非jar文件,本文主要介紹了maven一鍵刪除倉庫無用文件的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Java實現(xiàn)字符串倒序輸出的四種方法匯總

    Java實現(xiàn)字符串倒序輸出的四種方法匯總

    這篇文章主要介紹了Java實現(xiàn)字符串倒序輸出的四種方法匯總,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論

石屏县| 荃湾区| 成安县| 临颍县| 清远市| 珠海市| 射洪县| 东莞市| 桐乡市| 甘南县| 柏乡县| 宣威市| 凤凰县| 肥城市| 湄潭县| 湘潭市| 樟树市| 页游| 库尔勒市| 新邵县| 龙江县| 民勤县| 甘泉县| 临清市| 民丰县| 平武县| 长子县| 蒙山县| 麻城市| 玛曲县| 婺源县| 辽源市| 资中县| 霍林郭勒市| 垦利县| 岐山县| 额尔古纳市| 西和县| 石楼县| 绩溪县| 镇康县|