Spring Boot 3.X 下Redis緩存的嘗試(二):自動注解實現自動化緩存操作

前言

上文我們做了在Spring Boot下對Redis的基本操作,如果頻繁對Redis進行操作而寫對應的方法顯示使用注釋更會更高效;

比如:

依之前操作對一個業務進行定入緩存需要把數據拉取到后再定入;

而今天我們可以通過注釋的方式不需要額外代碼去實現對Redis的操作。

推薦在讀本文之前先看一下上一篇《》

一、加入依賴

Swagger 3.0

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.3.0</version>
</dependency>
spring-boot-starter-cache  緩存
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>

二、開啟緩存

@SpringBootApplication
@EnableCaching
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

三、Swagger配置

import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class SwaggerConfig {@Beanpublic GroupedOpenApi publicApi() {String[] paths = {"/**"};String[] packages = {"com.example.demo.controller"};//掃描的路徑return GroupedOpenApi.builder().group("public").pathsToMatch(paths).packagesToScan(packages).build();}@Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title("接口文檔標題").description("SpringBoot3 集成 Swagger3接口文檔").version("v1")).externalDocs(new ExternalDocumentation().description("項目API文檔").url("/"));}
}

四、實體類

import lombok.Data;import java.io.Serializable;@Data
public class Stu implements  Serializable{//private static final long serialVersionUID = 1L;private Integer id;private String name;private Integer age;
}

五、服務類 注解實現

import com.example.demo.mode.Stu;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;@Service
public class RedisService {//----通過注釋實現Redis的寫入@Cacheable (cacheNames = "abc",unless =  "#result==null",key =  "#id")public Stu getStuById(Integer id) {Stu stu = new Stu();stu.setId(id);stu.setName("張三");stu.setAge(18);return stu;}//---- 通過注釋實現Redis的更新@CachePut (cacheNames = "abc",key =  "#result.id")public Stu update(Stu stu) {stu.setName("李四");stu.setAge(19);return stu;}//---- 通過注釋實現Redis的刪除@CacheEvict (cacheNames = "abc",key =  "#id")public void delete(Integer id){}
}

六、控制層測試

@RestController
@Tag(name = "TestController",description = "測試接口")
@RequestMapping(value = "/swaggertest")
public class StuController {@Autowiredprivate RedisService redisService;@GetMapping("/getStuById")public Stu getStuById(Integer id){return redisService.getStuById(id);}@GetMapping("/update")public Stu update(Stu stu){return redisService.update(stu);}@DeleteMapping ("/delete")public void delete(Integer id){redisService.delete(id);}
}

七、效果展示

下篇:《Spring Boot 3.X 下Redis緩存的嘗試(三):精進-用Jason進行序列化》

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

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

相關文章

Deepseek應用技巧-Dify安裝和踩坑指南

前言&#xff1a;Dify的名號是非常大的&#xff0c;作為私有化AI部署中必不可少的一個組件&#xff0c;他的功能和COZE十分相似&#xff0c;可以進行工作流和智能體的搭建&#xff0c;有非常強大的功能&#xff0c;那本節就將來揭開Dify的神秘的面紗&#xff0c;首先看一下Dify…

ubuntu24.04安裝教程(圖文詳解)

Ubuntu 24.04 LTS&#xff0c;代號 Noble Numbat&#xff0c;于 2024 年 4 月 25 日發布&#xff0c;現在可以從 Ubuntu 官方網站及其鏡像下載。此版本將在 2029 年 4 月之前接收為期五年的官方安全和維護更新。 關于 Ubuntu 24.04 LTS 的一些關鍵點&#xff1a; 發布日期&am…

數據綁定頁面的完整的原理、邏輯關系、實現路徑是什么?頁面、表格、字段、屬性、值、按鈕、事件、模型、腳本、服務編排、連接器等之間的關系又是什么?

目錄 一、核心概念:什么是數據綁定頁面? 二、涉及的組件及其邏輯關系 頁面(Page): 表格(Table): 字段(Field): 屬性(Property): 值(Value): 按鈕(Button): 事件(Event): 模型(Model): 腳本(Script): 服務(Service): 服務編排(Se…

【 SpringCloud | 微服務 網關技術 】

單體架構時我們只需要完成一次用戶登錄、身份校驗&#xff0c;就可以在所有業務中獲取到用戶信息。而微服務拆分后&#xff0c;每個微服務都獨立部署&#xff0c;這就存在一些問題&#xff1a; 每個微服務都需要編寫登錄校驗、用戶信息獲取的功能嗎&#xff1f; 當微服務之間調…

python,Dataframe基于所有包含某個關鍵字的列等于某個值過濾

在 Python 中&#xff0c;使用 Pandas 的 DataFrame 丟棄符合特定條件的行&#xff0c;條件為所有包含某個關鍵字的列中&#xff0c;等于某個值&#xff08;即所有包含某個關鍵字的列中等于某個值的行&#xff09;&#xff0c;可用以下方法實現&#xff1a; import pandas as …

50天50個小項目 (Vue3 + Tailwindcss V4) ? | Sound Board(音響控制面板)

&#x1f4c5; 我們繼續 50 個小項目挑戰&#xff01;—— SoundBoard 組件 倉庫地址&#xff1a;https://github.com/SunACong/50-vue-projects 項目預覽地址&#xff1a;https://50-vue-projects.vercel.app/ &#x1f3af; 組件目標 實現一個響應式按鈕面板&#xff0c;點…

在Ubuntu20.04上安裝ROS Noetic

本章教程,主要記錄在Ubuntu20.04上安裝ROS Noetic。 一、添加軟件源 sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list二、設置秘鑰 …

神經網絡基礎:從單個神經元到多層網絡(superior哥AI系列第3期)

&#x1f9e0; 神經網絡基礎&#xff1a;從單個神經元到多層網絡&#xff08;superior哥AI系列第3期&#xff09; 哈嘍&#xff01;各位AI探索者們&#xff01;&#x1f44b; 上期我們把數學"怪獸"給馴服了&#xff0c;是不是感覺還挺輕松的&#xff1f;今天我們要進…

03 APP 自動化-定位元素工具元素定位

文章目錄 一、Appium常用元素定位工具1、U IAutomator View Android SDK 自帶的定位工具2、Appium Desktop Inspector3、Weditor安裝&#xff1a;Weditor工具的使用 4、uiautodev通過定位工具獲取app頁面元素有哪些屬性 二、app 元素定位方法 一、Appium常用元素定位工具 1、U…

Java消息隊列與安全實戰:謝飛機的燒餅攤故事

Java消息隊列與安全實戰&#xff1a;謝飛機的燒餅攤故事 第一輪&#xff1a;消息隊列與緩存 面試官&#xff1a;謝飛機&#xff0c;Kafka和RabbitMQ在電商場景如何選型&#xff1f; 謝飛機&#xff1a;&#xff08;摸出燒餅&#xff09;Kafka適合訂單日志處理&#xff0c;像…

Unity中的MonoSingleton<T>與Singleton<T>

1.MonoSingleton 代碼部分 using UnityEngine;/// <summary> /// MonoBehaviour單例基類 /// 需要掛載到GameObject上使用 /// </summary> public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> {private static T _instance;…

day 40 python打卡

仔細學習下測試和訓練代碼的邏輯&#xff0c;這是基礎&#xff0c;這個代碼框架后續會一直沿用&#xff0c;后續的重點慢慢就是轉向模型定義階段了。 # 先繼續之前的代碼 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataL…

進階日記(一)大模型的本地部署與運行

目錄 一、背景知識 為什么要在本地部署大模型&#xff1f; 在本地部署大模型需要做哪些準備工作&#xff1f; &#xff08;1&#xff09;硬件配置 &#xff08;2&#xff09;軟件環境 有哪些部署工具可供選擇&#xff1f; 二、Ollma安裝 Ollama安裝完之后&#xff0c;還…

Spring Boot Starter 自動裝配原理全解析:從概念到實踐

Spring Boot Starter 自動裝配原理全解析&#xff1a;從概念到實踐 在Spring Boot開發中&#xff0c;Starter和自動裝配是兩個核心概念&#xff0c;它們共同構成了“開箱即用”的開發體驗。通過引入一個Starter依賴&#xff0c;開發者可以快速集成第三方組件&#xff08;如Red…

win11回收站中出現:查看回收站中是否有以下項: WPS云盤回收站

好久沒更新了&#xff0c;首先祝所有大朋友、小朋友六一兒童節快樂&#xff0c;真的希望我們永遠都不會長大呀&#xff0c;長大真的好累呀(?_?) 免責聲明 筆者先來個免責聲明吧&#xff0c;被網上的陰暗面嚇到了 若讀者參照筆者的這篇文章所執行的操作中途或后續出現的任何…

網絡安全大模型理解

一、網絡安全大模型的概述 網絡安全大模型是一種用于識別和應對各種網絡安全威脅的模型。它通過分析網絡數據包、網絡行為等信息&#xff0c;識別潛在的網絡安全事件&#xff0c;并采取相應的措施進行防御。網絡安全大模型主要包括以下幾個部分&#xff1a; 1. 數據預處理&am…

C++語法架構解說

C 是一種功能強大且靈活的編程語言&#xff0c;廣泛應用于系統編程、游戲開發、嵌入式系統、金融軟件等領域。 其語法架構復雜且豐富&#xff0c;涵蓋了從基礎語法到高級特性的各個方面。 對 C 語法架構 的詳細解析&#xff0c;涵蓋其核心語法結構、面向對象編程&#xff08;…

審計- 1- 審計概述

1.財務報表審計的概念 財務報表審計是指注冊會計師對財務報表是否不存在重大錯報提供合理保證&#xff0c;以積極方式提出意見&#xff0c;增強除管理層之外的預期使用者對財務報表信賴的程度。 1.1 審計業務三方關系人 注冊會計師對財務報表發表審計意見是注冊會計師的責任管…

RapidOCR集成PP-OCRv5_det mobile模型記錄

該文章主要摘取記錄RapidOCR集成PP-OCRv5_mobile_det記錄&#xff0c;涉及模型轉換&#xff0c;模型精度測試等步驟。原文請前往官方博客&#xff1a; https://rapidai.github.io/RapidOCRDocs/main/blog/2025/05/26/rapidocr%E9%9B%86%E6%88%90pp-ocrv5_det%E6%A8%A1%E5%9E%8B…

Spine工具入門教程2之導入

1、導入定義 從原畫轉化為Spine的環節。 &#xff08;1&#xff09;選擇路徑&#xff0c;拖動圖片導入方式 缺點&#xff1a;定位不準 【使用批量導出的方式】 在PS工具中&#xff0c;選擇所有圖層后右鍵選擇導出。 在Spine工具中&#xff0c;選擇路徑導入圖片。 然后再拖…