IntelliJ IDEA中Spring Boot 3.4.x+集成Redis 7.x:最新配置與實戰指南

?前言

Spring Boot 3.4.x作為當前?最新穩定版本?,全面支持Java 17+與Jakarta EE 10規范。本文以?Spring Boot 3.4.1?和?Redis 7.x?為例,詳解如何在IDEA中快速接入Redis,涵蓋?最新依賴配置?、?數據序列化優化?、?緩存注解?及?高版本常見問題排查?,助你掌握企業級緩存方案!


?一、環境要求

1. ?基礎環境

  • JDK 17+(推薦OpenJDK 17/21)
  • IntelliJ IDEA 2023.1+
  • Redis 7.x(官網下載)

2. ?項目初始化

  • 使用Spring Initializr創建項目,選擇:
    • Spring Boot 3.4.x
    • 依賴項:Spring Web, Spring Data Redis, Lombok

二、依賴配置(Spring Boot 3.4.x+特性)

?1. pom.xml關鍵依賴

<!-- Spring Boot 3.4.x 父工程 -->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.1</version>
</parent><!-- Redis Starter(默認Lettuce) -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency><!-- Jakarta JSON處理(兼容Redis序列化) -->
<dependency><groupId>jakarta.json</groupId><artifactId>jakarta.json-api</artifactId><version>2.1.2</version>
</dependency>
<dependency><groupId>org.glassfish</groupId><artifactId>jakarta.json</artifactId><version>2.0.1</version>
</dependency>

?注?:Spring Boot 3.4.x默認使用?Lettuce 6.3.x?,無需額外配置連接池。若需Jedis,需手動排除Lettuce并添加Jedis依賴。


?三、Redis連接配置

1. application.yml(推薦格式)

spring:data:redis:host: localhostport: 6379password: # 無密碼留空database: 0lettuce:pool:max-active: 8max-idle: 4min-idle: 0max-wait: 2000ms# 新版本支持客戶端名稱(監控識別)client-name: springboot-app

?2. 自定義序列化(解決Jackson兼容性問題)

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);// Key使用String序列化template.setKeySerializer(RedisSerializer.string());// Value使用JSON序列化(適配Jakarta)template.setValueSerializer(buildJsonSerializer());return template;}private RedisSerializer<Object> buildJsonSerializer() {ObjectMapper mapper = new ObjectMapper();mapper.registerModule(new JavaTimeModule());mapper.activateDefaultTyping(mapper.getPolymorphicTypeValidator(),ObjectMapper.DefaultTyping.EVERYTHING,JsonTypeInfo.As.PROPERTY);return new GenericJackson2JsonRedisSerializer(mapper);}
}

?四、緩存注解實戰(適配Spring 6.x+)

?1. 啟用緩存

@SpringBootApplication
@EnableCaching
public class DemoApplication { ... }

?2. 服務層緩存示例

@Service
@CacheConfig(cacheNames = "userCache")
public class UserService {@Autowiredprivate UserRepository repository;// 使用SpEL動態生成Key@Cacheable(key = "#id + '_' + #type")public User getUser(Long id, String type) {return repository.findById(id).orElseThrow();}// 條件緩存(僅緩存長度>5的名稱)@Cacheable(key = "#name", condition = "#name.length() > 5")public User getUserByName(String name) {return repository.findByName(name);}// 事務性緩存更新(結合@Transactional)@Transactional@CachePut(key = "#user.id")public User updateUser(@NonNull User user) {return repository.save(user);}
}

?五、響應式Redis操作(可選)

?1. 添加響應式依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis-reactive</artifactId>
</dependency>

?2. 響應式模板使用

@Autowired
private ReactiveRedisTemplate<String, Object> reactiveTemplate;public Mono<Boolean> saveSession(String sessionId, User user) {return reactiveTemplate.opsForValue().set("session:" + sessionId, user, Duration.ofMinutes(30));
}

?六、常見問題與解決方案

?Q1:Jackson序列化失敗(Jakarta兼容性問題)

  • 現象?InvalidTypeIdException: Missing type id when trying to resolve subtype
  • ?解決?
    1. 確認添加了jakarta.json依賴。
    2. RedisConfig中顯式配置ObjectMapper(參考上文)。

?Q2:Redis連接池不生效

  • 原因?:Spring Boot 3.4.x默認啟用Lettuce連接池,無需額外配置。
  • ?驗證?:通過/actuator/metrics/redis.pool.active端點監控連接狀態。

?Q3:Spring Boot 3.4.x與Redis 7.x的TLS連接

  • ?配置?
spring:data:redis:url: rediss://localhost:6379  # SSL協議ssl: trueclient-type: lettucelettuce:pool:enabled: truessl:key-store-type: PKCS12key-store: classpath:keystore.p12key-store-password: 123456

總結

Spring Boot 3.4.x在Redis集成上進一步優化了性能與兼容性,支持最新的Jakarta標準和響應式編程。本文從?依賴配置?到?高級特性?,提供了一套完整的生產級解決方案。

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

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

相關文章

VectorBT:使用PyTorch+Transformer訓練和回測股票模型 進階五

VectorBT&#xff1a;使用PyTorchTransformer訓練和回測股票模型 進階五 本方案基于PyTorch框架與Transformer模型&#xff0c;結合VectorBT回測引擎構建多股票量化交易系統&#xff0c;采用滑動窗口技術構建時序特征&#xff0c;通過自注意力機制捕捉市場規律預測收益率&#…

4.3-4.6學習總結 Java:Set系列集合+雙列集合+Map

Set系列集合&#xff1a; 元素是唯一的。 HashSet&#xff1a; 哈希值&#xff1a; 如果沒有重寫hashcode方法和equals方法&#xff0c;那么哈希值是根據地址值計算的。 LinkedHashSet&#xff1a; TreeSet底層為紅黑樹。 紅黑樹&#xff1a;兩個紅色節點不能相連。 雙列集合&…

unreal engine5開發仿鬼泣5的游戲,把敵人擊飛到空中4連擊

UE5系列文章目錄 文章目錄 UE5系列文章目錄前言一、實現思路二、具體藍圖 前言 unreal engine5開發仿鬼泣5的游戲&#xff0c;把敵人擊飛到空中4連擊&#xff0c;先看下效果 一、實現思路 unreal engine5開發仿鬼泣5的游戲&#xff0c;把敵人擊飛到空中4連擊 在Unreal Engi…

功耗日志抓取需求

最近羅列了一些功耗分析需要的常見日志&#xff1a; 測試功耗前&#xff1a; adb shell dumpsys batterystats --reset adb shell dumpsys batterystats --enable full-wake-history 測試功耗后&#xff0c;使用腳本導出如下功耗日志&#xff1a; 腳本 chmod x collect_logs.s…

Java后端開發流程

Java后端開發流程 目錄 開發流程概述具體實現步驟開發最佳實踐項目結構示例代碼示例常見問題與解決方案 開發流程概述 Java后端開發是一個系統化的過程&#xff0c;通常包括以下幾個主要階段&#xff1a; 1. 需求分析階段 業務需求收集&#xff1a;與產品經理、業務方溝通…

Java項目之基于ssm的孩童收養信息管理(源碼+文檔)

項目簡介 孩童收養信息管理實現了以下功能&#xff1a; 實現了用戶在線選擇試題并完成答題&#xff0c;在線查看考核分數。管理員管理字典管理、收養管理、收養信息更改記錄管理、收養者配偶管理、送養管理、員工管理、管理員管理等功能。 &#x1f495;&#x1f495;作者&am…

查詢條件與查詢數據的ajax拼裝

下面我將介紹如何使用 AJAX 動態拼裝查詢條件和獲取查詢數據&#xff0c;包括前端和后端的完整實現方案。 一、前端實現方案 1. 基礎 HTML 結構 html 復制 <div class"query-container"><!-- 查詢條件表單 --><form id"queryForm">…

【算法競賽】狀態壓縮型背包問題經典應用(藍橋杯2019A4分糖果)

在藍橋杯中遇到的這道題&#xff0c;看上去比較普通&#xff0c;但其實蘊含了很巧妙的“狀態壓縮 背包”的思想&#xff0c;本文將從零到一&#xff0c;詳細解析這個問題。 目錄 一、題目 二、思路分析&#xff1a;狀態壓縮 最小覆蓋 1. 本質&#xff1a;最小集合覆蓋問題…

STL 性能優化實戰:解決項目中標準模板庫的性能瓶頸

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、全棧領域優質創作者、高級開發工程師、高級信息系統項目管理師、系統架構師&#xff0c;數學與應用數學專業&#xff0c;10年以上多種混合語言開發經驗&#xff0c;從事DICOM醫學影像開發領域多年&#xff0c;熟悉DICOM協議及…

大模型如何優化數字人的實時交互與情感表達

標題:大模型如何優化數字人的實時交互與情感表達 內容:1.摘要 隨著人工智能技術的飛速發展&#xff0c;數字人在多個領域的應用愈發廣泛&#xff0c;其實時交互與情感表達能力成為提升用戶體驗的關鍵因素。本文旨在探討大模型如何優化數字人的實時交互與情感表達。通過分析大模…

qt designer 軟件主題程序設計

對于使用Qt Designer設計的界面&#xff0c;主題切換的實現需要結合Qt的信號槽機制、樣式表動態加載以及資源管理。以下是針對Qt Designer UI的詳細解決方案&#xff1a; 一、UI文件與主題系統的整合架構 二、核心實現步驟 1. 動態樣式表加載系統 // ThemeManager.h class …

一、STM32簡介

一、實驗器材介紹 二、STM32簡介 1.STM32 名詞解釋 STM32是ST公司基于ARM Cortex-M內核開發的32位微控制器。 ST&#xff0c;指ST公司&#xff08;意法半導體&#xff09;;M&#xff0c;MicroController 微控制器&#xff08;MCU,MicroController Unit 微控制器單元/單片機&…

JVM虛擬機篇(一)深入理解JVM:組成部分、運行流程及程序計數器詳解

JVM虛擬機篇&#xff08;一&#xff09;深入理解JVM&#xff1a;組成部分、運行流程及程序計數器詳解 JVM虛擬機篇&#xff08;一&#xff09;深入理解JVM&#xff1a;組成部分、運行流程及程序計數器詳解一、引言二、JVM的組成部分2.1 類加載子系統2.2 運行時數據區2.3 執行引…

elementui的默認樣式修改

今天用element ui &#xff0c;做了個消息提示&#xff0c;發現提示的位置總是在上面&#xff0c;如圖&#xff1a; 可是我想讓提示的位置到下面來&#xff0c;該怎么辦&#xff1f; 最后還是看了官方的api 原來有個自定義樣式屬性 customClass 設置下就好了 js代碼 css代碼 效…

游戲引擎學習第204天

回顧并為今天的內容做鋪墊 好&#xff0c;現在開始這一集。今天我們將進行一些用戶界面編程&#xff0c;覺得這是一個展示如何編寫這類代碼的好時機。很多人對如何做用戶界面代碼都很好奇&#xff0c;所以展示一下如何編寫是非常有意義的。 我之所以在現在的這個地方做這些工…

我的世界1.20.1forge模組開發進階教程——TerraBlender

TerraBlender介紹 從模組開發者的視角來看,TerraBlender為Minecraft生物群系類模組的開發提供了全方位的技術支持,顯著降低了開發門檻并提升了模組的質量與擴展性: 跨平臺兼容性架構支持Forge/Fabric/Quilt/NeoForge四大主流加載器,開發者無需為不同平臺單獨適配代碼客戶端…

借助mcpo在open-webui中使用mcp

open-webui前幾天發布了0.6版本&#xff0c;我立即進行了升級。新版本中一個重要功能是通過mcpo方式支持了mcp server。本文將介紹mcpo是什么&#xff0c;以及如何在open-webui中使用它。同時&#xff0c;我也會分享幾個在接入過程中遇到的問題及解決方案。 首先來介紹mcpo&…

安裝gpu版本的dgl

1.先去網址&#xff0c;找到對應版本的dgl,然后下載到本地。 dgl-whl下載地址 我的是python 3.8 &#xff0c;cuda 11.6. windows 2.在虛擬環境里 輸入 pip install E:\dgl-1.0.2cu116-cp38-cp38-win_amd64.whl &#xff08;因為我下載到E盤里了&#xff09; 這樣GPU版本的d…

PyTorch使用(7)-張量常見運算函數

1. 基本數學運算 1.1 平方根和冪運算 import torchx torch.tensor([4.0, 9.0, 16.0])# 平方根 sqrt_x torch.sqrt(x) # tensor([2., 3., 4.])# 平方 square_x torch.square(x) # tensor([16., 81., 256.])# 任意冪次 pow_x torch.pow(x, 3) # tensor([64., 729., 4096…

Nginx功能及應用全解:從負載均衡到反向代理的全面剖析

Nginx作為一款開源的高性能HTTP服務器和反向代理服務器&#xff0c;憑借其高效的資源利用率和靈活的配置方式&#xff0c;已成為互聯網領域中最受歡迎的Web服務器之一。無論是作為HTTP服務器、負載均衡器&#xff0c;還是作為反向代理和緩存服務器&#xff0c;Nginx的多種功能廣…