SpringCache和SpringTask

SpringCache

在啟動類上加EnableCaching注解

我們只要在Controller上寫一個SpringCache相應的注解

我們就能實現緩存了

簡化緩存操作代碼,提高我們的效率

我們默認是我們的spring做緩存

但我們還可以替換我們的緩存技術

例如

EhCache

Google

Redis

來作為緩存技術

?


我們是通過這個接口,CacheManager接口來實現的


4個常用注解?


有三個注解

Cacheput

CacheEvict

CacheEnable


使用Cacheput注解

我們添加緩存時使用

我們在這個Controller中

注入了我們的CacheManager對象

我們在啟動類上加了EnableCaching注解

我們在新增操作上寫這個,然后value是這個緩存的名稱

?

可以存很多的緩存在一個value

然后我們有個key,來作為表示

?#result

我們的key可以通過spring內置語言來寫,#result,就是我們當前方法的返回值

#root

可以獲取到當前的這個方法

拿到參數值

我們可以和參數名對應,然后來拿到它的參數值

?存儲于內存

其實我們這個存儲是基于內存的,重啟服務后我們就沒有了

使用CacheEvict注解

我們刪除緩存的時候用

#root.args[0]

?獲得方法的第幾個參數

#p0

也可以用p0這種寫法,指定時第幾個參數


使用CacheEnable

這個用在我們的查詢方法上

查詢之前看看我們有沒有

存入空緩存

這個很吊,如果我們過來,然后我們查詢數據庫為空

condition

condition是滿足什么條件的時候,我們才緩存


?使用Spring內置語言的小問題

其實我們這里是不能使用Result的

Cacheable()里面的condition使用的內置對象只有root,和一些參數(這個參數有使用限制)

我們使用condition的時候,我們Spring內置對象不能使用返回結果#result

所以我們可以使用unless,這個和condition相反

我們就可以使用#result了


技術換型,使用Redis

首先要引入我們的依賴

Spring-boot-starter-cache依賴

配置yml文件

設置緩存有效期

我們可以直接在配置文件中,配置time-tolive來設置這個緩存的有效期

我們這樣就把我們底層緩存的產品換成了Redis


SpringTask

SpringTask是什么

springtask是spring框架的一個定時任務

是spring提供的任務調度工具,按照約定的時間自動執行某個代碼邏輯

作用:定時自動執行某段java代碼

例如鬧鐘


應用場景

信用卡提醒還貸

花唄提醒還款

火車票售票系統處理未支付訂單

紀念日發送通知


Cron表達式

我們的springtask要寫我們的cron表達式

定時任務觸發


什么是Cron表達式

?

通常

周和日是很難同時確定的,所以我們這兩個

如果另一個確定了另一個就填寫?

但還是有問題,例如我們想要2月份的最后一天

是28還是29?

我們直接寫的話肯定不好,會出錯的

但是為了描述這種具體的細節呢,我們會有一些特殊的字符

我們沒必要去手寫我們的cron表達式,我們有cron表達式自動生成的網站


入門案例

添加EnableScheduling注解

在啟動類上添加我們的EnableScheduling注解,開啟我們的任務調度

我們的定時任務類上要加我們的Componet注解

這樣我們才能成功使用Shceduled注解(寫我們的Cron表達式)

然后定義我們的方法,我們的方法是void類,是沒有返回值的


需求分析(經典使用)

我們一分鐘檢查一次,看看是否有超時訂單

我們的訂單不可能一直時派送狀態

過了一定的時間我們要處理一下這個狀態

?

我們寫sql語句,查出超時15分鐘的訂單,然后把訂單狀態設置成已經取消

plusMinute方法

LocalDateTime有個plusMinute方法,可以加減時間

為了防止日志同時輸出,控制臺很難觀察

?修改程序啟動時,我們的定時任務的啟動時間

所以我們一個從1秒開始,5秒觸發一次

一個從0秒開始,5秒觸發一次

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24237.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24237.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24237.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MAVEN:自定義模板Archetype的創建

目錄 一、簡介 二、具體步驟 三、 vscode通過模板創建項目 四、通過IDEA創建 一、簡介 有時候MAVEN自帶的模板庫并不能滿足我們創建項目的需求,為了能夠快速創建項目,免去每次復雜的配置,所以我們需要自定義模板庫,本次操作基于…

Linux 性能優化基礎

文章目錄 常見指標分類(USE法)常見性能工具CPU性能工具內存性能工具文件系統和磁盤I/O性能工具網絡性能工具 根據指標找工具CPU性能內存性能文件系統和磁盤I/O網絡性能 根據工具找指標CPU性能內存性能文件系統和磁盤I/O網絡性能 CPU性能分析一般步驟內存…

【C++題解】1254. 求車速

問題:1254. 求車速 類型:簡單循環 題目描述: 一輛以固定速度行駛的汽車,司機在上午 10 點看到里程表上的讀數是一個對稱數(即這個數從左向右讀和從右向左讀是完全一樣的),為95859 。 兩小時后里程表上 出現了一個新的…

不明確的unicode字符

不明確的unicode字符 起因:一個Demo源碼,也不知道是用什么編輯器編的,中文注釋非常全面。就打算原來的基礎上改改就用,特別是里面大量接口、類的定義,真沒必要重寫。但是在VS Code里面打開,出現“本文檔包含…

k-means聚類模型的優缺點

一、k-means聚類模型的優點 1. 簡單高效:k-means算法思想簡單直觀,易于實現。它通過迭代計算樣本點與聚類中心之間的距離,并不斷調整聚類中心的位置,直至滿足終止條件。由于其計算過程相對直接,所以具有較高的執行效率…

控制臺輸入javac命令輸出的結果中的中文亂碼解決方式

默認字符編碼UTF-8無法解析中文。設置環境變量中 “JAVA_TOOL_OPTIONS” 的值為"UTF-8" 即可。 具體配置步驟: 桌面右鍵"我的電腦" --> 屬性 高級系統設置 環境變量 用戶變量中添加 JAVA_TOOL_OPTIONS 然后確定,保存即可。

阿里云一鍵登錄號碼認證服務

阿里云文檔:號碼認證SDK_號碼認證服務(PNVS)-阿里云幫助中心 對于后端大概流程 前端App會傳一個token過來 后端通過下面方法解析 如果解析可以獲得號碼,說明號碼認證成功,如果無法正確解析則認證失敗 /*** actoken來換取電話號碼* param token app端用戶授權actok…

WDF驅動開發-PNP和電源管理(二)

下面是一種比較典型的 PnP 和電源管理方案,WDF框架在這些情況下調用驅動程序的事件回調函數: 用戶插入設備用戶拔出設備設備進入低功耗狀態設備回到工作狀態PnP 管理器重新分發系統資源 這些幾乎是所有的和PNP、電源管理相關的場景了,它們分…

達夢8 網絡中斷對系統的影響

測試環境:三節點實時主從 版本:--03134283938-20221019-172201-20018 測試1 系統沒有啟動確認監視器 關閉節點3網卡 登錄節點1檢查主庫狀態 顯示向節點2發送歸檔成功,但無法收到節點3的消息,節點1掛起 日志報錯如下&#xf…

易于上手的requests

Python中的requests庫主要用于發送HTTP請求并獲取響應結果。在現代網絡編程中,HTTP請求是構建客戶端與服務器之間通信的基礎。Python作為一種高級編程語言,其豐富的庫支持使得它在網絡數據處理領域尤為突出。其中,requests庫以其簡潔、易用的…

力扣560. 和為 K 的子數組

Problem: 560. 和為 K 的子數組 文章目錄 題目描述思路復雜度Code 題目描述 思路 1.初始化一個哈希表preSum,用于記錄前綴和及其出現次數,ans記錄和為k的子數組數量、sum_i記錄當前前綴和; 2.將前綴和為 0 的情況存入哈希表,表示前綴和為 0 出…

【Python】認識 Python

一、計算機基礎概念 1、什么是計算機 很多老一輩的人,管下面這個叫做計算機。然而,它只是 “計算器”,和計算機是有很大區別的。 現在我們所說的計算機,不光能進行算術運算,還能進行邏輯判斷、數據存儲、網絡通信等…

遇到no module named ‘pyLDAvis.sklearn‘的解決辦法

在NLP學習中,常常用到LDA主題模型對文本進行分類,可視化經常用到的代碼有 import pyLDAvis import pyLDAvis.sklearnpanel pyLDAvis.sklearn.prepare(lda, tf_idf, tf_idf_vectorizer) pyLDAvis.save_html(panel, lda_visualization.html) pyLDAvis.di…

HTML靜態網頁成品作業(HTML+CSS)—— 節日母親節介紹網頁(5個頁面)

🎉不定期分享源碼,關注不丟失哦 文章目錄 一、作品介紹二、作品演示三、代碼目錄四、網站代碼HTML部分代碼 五、源碼獲取 一、作品介紹 🏷?本套采用HTMLCSS,未使用Javacsript代碼,共有5個頁面。 二、作品演示 三、代…

騎砍2霸主MOD開發(12)-游戲實例GameEntity

一.GameEntity游戲實例 <1.通用GameEntity,梯子,椅子,攻城云梯,戰車等定義為GameEntity,一個GameEntity由若干GameEntityComponets組成,例如攻城云梯的輪子是一個獨立Component,支架是一個獨立Component, GameEntity GameEntityComponent1 GameEntityComponent2 GameEntit…

前端開發之WebSocket通信

WebSocket WebSocket是一種在單個TCP連接上進行全雙工通信&#xff08;雙向同時通信&#xff09;的協議&#xff0c;它允許服務器和客戶端之間自由地交換數據&#xff0c;無需反復建立連接。其特點包括&#xff1a; 雙向通信&#xff1a;實時性強&#xff0c;支持服務器向客戶…

移動端前端開發遇到過的Andorid和IOS的差異記錄

移動端前端開發遇到過的安卓和蘋果的差異記錄 1. 引入外部資源&#xff0c;最好用https2. IOS時間戳獲取NaN問題3. 金額三位分節顯示方式4. .webp圖片支持問題 1. 引入外部資源&#xff0c;最好用https ios處于安全性的考慮&#xff0c;不大支持http引入外部資源&#xff0c;所…

【kubernetes】探索k8s集群的配置資源(secret和configma)

目錄 一、Secret 1.1Secret 有四種類型 1.2Pod 有 3 種方式來使用 secret 1.3應用場景&#xff1a;憑據 1.4創建 Secret 1.4.1用kubectl create secret命令創建Secret 1.4.2內容用 base64 編碼&#xff0c;創建Secret 1.4.2.1Base64編碼 1.4.2.2創建YAML文件 1.4.2.3…

《計算機網絡》

計算題【33】 題目:假設一個有噪聲信道的帶寬為3KHz,信噪比為30dB,則該信道的最大數據傳輸速率是多少? C = W log2(1+S/N)(bit/s)=3000Hz* log2(1+30)= 29.9kbps 題目:一個網絡中,設定的IP地址范圍是:172.88.32.1至172.88.32.254,試確定其合適的子網掩碼。 分析第…

「前端+鴻蒙」鴻蒙應用開發預覽模擬器運行

在鴻蒙應用開發中&#xff0c;預覽和模擬器運行是開發流程中的重要環節&#xff0c;它們允許開發者在不使用實體設備的情況下測試應用的界面和功能。以下是如何使用華為DevEco Studio進行預覽和在模擬器上運行鴻蒙應用的詳細步驟&#xff0c;以及相應的示例代碼。 快速體驗-預覽…