Java SpringBoot 項目中 Redis 存儲 Session 具體實現步驟

目錄

    • 一、添加依賴
    • 二、配置 Redis
    • 三、配置 RedisTemplate
    • 四、創建控制器演示 Session 使用
    • 五、啟動應用并測試
    • 六、總結

Java 在 Spring Boot 項目中使用 Redis 來存儲 Session,能夠實現 Session 的共享和高可用,特別適用于分布式系統環境。以下是具體的實現步驟:

一、添加依賴

首先,在項目的 pom.xml 文件中添加 Spring Session 和 Redis 相關的依賴:

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

二、配置 Redis

application.properties 文件中,添加 Redis 的配置信息:

# Redis 配置
spring.redis.host=localhost
spring.redis.port=6379
# Session 配置
spring.session.store-type=redis
server.servlet.session.timeout=1800s # 設置 Session 超時時間,例如 30 分鐘

三、配置 RedisTemplate

創建一個配置類,用于自定義 RedisTemplate 的序列化方式,確保 Session 數據能夠被正確地存儲和讀取:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());return template;}
}

四、創建控制器演示 Session 使用

創建一個控制器來演示如何在 Spring Boot 應用中使用 Session,并通過 Redis 進行存儲:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.SessionAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;import java.util.Date;@RestController
@SessionAttributes("user")
public class SessionController {@GetMapping("/setSession")public String setSession(org.springframework.ui.Model model) {model.addAttribute("user", "testUser");return "Session set at " + new Date();}@GetMapping("/getSession")public String getSession(@SessionAttribute(name = "user", required = false) String user) {if (user != null) {return "Session user: " + user;} else {return "No session found";}}
}

五、啟動應用并測試

啟動 Spring Boot 應用后,可以通過以下方式測試 Session 的存儲和獲取功能:

  1. 訪問 http://localhost:8080/setSession 設置 Session。
  2. 訪問 http://localhost:8080/getSession 獲取 Session。

六、總結

通過以上步驟,您已經在 Spring Boot 項目中成功集成了 Redis 來存儲 Session 數據。這種方式特別適用于分布式系統,能夠確保用戶會話在多個服務器之間的一致性和高可用性。同時,使用 Redis 存儲 Session 還能減輕應用服務器的內存壓力,并提供高效的讀寫性能。希望本教程能幫助您在實際項目中順利實施這一功能。

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

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

相關文章

分布式電源的配電網無功優化

分布式電源(Distributed Generation, DG)的大規模接入配電網,改變了傳統單向潮流模式,導致電壓波動、功率因數降低、網損增加等問題,無功優化成為保障配電網安全、經濟、高效運行的關鍵技術。 1. 核心目標 電壓穩定性:抑制DG并網點(PCC)及敏感節點的電壓越限(如超過5%…

JS手寫代碼篇---手寫Promise

4、手寫promise Promise 是一個內置對象&#xff0c;用于處理異步操作。Promise 對象表示一個尚未完成但預期將來會完成的操作。 Promise 的基本結構 一個 Promise 對象通常有以下狀態&#xff1a; pending&#xff08;進行中&#xff09;&#xff1a;初始狀態&#xff0c;…

我喜歡的vscode幾個插件和主題

主題 Monokaione Monokai Python 語義高光支持 自定義顏色為 self 將 class , def 顏色更改為紅色 為裝飾器修復奇怪的顏色 適用于魔法功能的椂光 Python One Dark 這個主題只在python中效果最好。 我為我個人使用做了這個主題,但任何人都可以使用它。 插件 1.Pylance Pylanc…

【深度學習新浪潮】大模型時代,我們還需要學習傳統機器學習么?

在大模型時代,AI 工程師仍需掌握傳統機器學習知識,這不僅是技術互補的需求,更是應對復雜場景和職業發展的關鍵。以下從必要性和學習路徑兩方面展開分析: 一、傳統機器學習在大模型時代的必要性 技術互補性 大模型(如GPT、BERT)擅長處理復雜語義和生成任務,但在數據量少…

年度工作計劃總結述職報告PPT模版一組分享

工作計劃總結述職報告PPT模版&#xff1a;工作計劃述職報告PPT模版https://pan.quark.cn/s/fba40a5e87da 第一套PPT模版是醫院年度工作計劃的封面頁&#xff0c;有藍橙配色、醫院標題、年度工作計劃的大字、英文副標題、匯報人信息和右上角的醫院logo區域&#xff0c;右側還有醫…

軟件設計師“排序算法”真題考點分析——求三連

一、考點分值占比與趨勢分析 綜合知識題分值統計表 年份考題數量總分值分值占比考察重點2018222.67%時間復雜度/穩定性判斷2019334.00%算法特性對比分析2020222.67%空間復雜度要求2021111.33%算法穩定性判斷2022334.00%綜合特性應用2023222.67%時間復雜度計算2024222.67%分治…

華為云Flexus+DeepSeek征文|基于華為云Flexus云服務的云服務器單機部署Dify-LLM應用開發平臺

目錄 一、前言 二、華為云Flexus云服務優勢 三、華為云Flexus一鍵部署Dify 3.1 選擇模板 3.2 參數配置 3.3 資源棧設置 3.4 配置確認 3.5 創建執行計劃 3.6 部署 四、Dify-LLM應用開發平臺初體驗 4.1 訪問Dify-LLM應用開發平臺 4.2 設置管理員賬戶 4.3 登錄Dify-LLM應用開發平臺…

智能指針RAII

引入&#xff1a;智能指針的意義是什么&#xff1f; RAll是一種利用對象生命周期來控制程序資源&#xff08;如內存、文件句柄、網絡連接、互斥量等等&#xff09;的簡單技術。 在對象構造時獲取資源&#xff0c;接著控制對資源的訪問使之在對象的生命周期內始終保持有效&#…

nt!MiRemovePageByColor函數分析之脫鏈和刷新顏色表

第0部分&#xff1a;背景 PFN_NUMBER FASTCALL MiRemoveZeroPage ( IN ULONG Color ) { ASSERT (Color < MmSecondaryColors); Page FreePagesByColor[Color].Flink; if (Page ! MM_EMPTY_LIST) { // // Remove the first entry on the zeroe…

DEBUG:Lombok 失效

DEBUG&#xff1a;Lombok 失效 問題描述 基于 Spring Boot 的項目中&#xff0c;編譯時顯示找不到 log 屬性。查看對應的 class 類&#xff0c;Lombok 正常在編譯時生成 log 屬性。 同時存在另一個問題&#xff0c;使用Getter注解&#xff0c;但實際使用中該注解并沒有生效&…

3D幾何建模引擎3D ACIS Modeler核心功能深度解讀

3D ACIS Modeler是一款由Spatial Corporation&#xff08;現為Dassault Systmes旗下&#xff09;開發的工業級三維幾何建模內核&#xff0c;為CAD/CAM/CAE、建筑、制造、測量及三維動畫等領域提供底層建模能力。本文將從基本定位、核心功能及行業案例三方面&#xff0c;系統介紹…

Flutter - 集成三方庫:數據庫(sqflite)

數據庫 $ flutter pub add sqlite $ flutter pub get$ flutter run運行失敗&#xff0c;看是編譯報錯,打開Xcode工程 ? B 編譯 對比 GSYGithubAppFlutter 的Xcode工程Build Phases > [CP] Embed Pods Frameworks 有sqfite.framework。本地默認的Flutter工程默認未生成Pod…

Android 中 權限分類及申請方式

在 Android 中,權限被分為幾個不同的類別,每個類別有不同的申請和管理方式。 一、 普通權限(Normal Permissions) 普通權限通常不會對用戶隱私或設備安全造成太大風險。這些權限在應用安裝時自動授予,無需用戶在運行時手動授權。 android.permission.INTERNETandroid.pe…

目標檢測指標計算

mAP&#xff08;mean Average Precision&#xff09; 概述 預備參數&#xff1a;類別數&#xff0c;IoU閾值&#xff0c;maxDets值&#xff08;每張測試圖像最多保留maxDets個預測框&#xff0c;通常是根據置信度得分排序后取前maxDets個&#xff09;&#xff1b; Q: 假如某張…

聯合索引失效情況分析

一.模擬表結構&#xff1a; 背景&#xff1a; MySQL版本——8.0.37 表結構DDL&#xff1a; CREATE TABLE unite_index_table (id bigint NOT NULL AUTO_INCREMENT COMMENT 主鍵,clomn_first varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMEN…

軟件架構之-論分布式架構設計及其實現

論分布式架構設計及其實現 摘要正文摘要 2023年2月,本人所在集團公司承接了長三角地區某省漁船圖紙電子化審查項目開發,該項目旨在為長三角地區漁船建造設計院、漁船審圖機構提供一個便捷化的服務平臺。在次項目中,我作為項目成員參與了整個項目的建設工作,全權負責項目需求…

Pydantic數據驗證實戰指南:讓Python應用更健壯與智能

導讀&#xff1a;在日益復雜的數據驅動開發環境中&#xff0c;如何高效、安全地處理和驗證數據成為每位Python開發者面臨的關鍵挑戰。本文全面解析了Pydantic這一革命性數據驗證庫&#xff0c;展示了它如何通過聲明式API和類型提示系統&#xff0c;徹底改變Python數據處理模式。…

3、ubantu系統 | 通過vscode遠程安裝并配置anaconda

1、vscode登錄 登錄后通過pwd可以發現目前位于wangqinag賬號下&#xff0c;左側為屬于該賬號的文件夾及文件。 通過cd ..可以回到上一級目錄&#xff0c;通過ls可以查看當前目錄下的文件夾及文件。 2、安裝 2.1、下載anaconda 通過wget和curl下載未成功&#xff0c;使用手動…

Python 與 Java 在 Web 開發中的深度對比:從語言特性到生態選型

在 Web 開發領域&#xff0c;Python 和 Java 作為兩大主流技術棧&#xff0c;始終是開發者技術選型時的核心考量。本文將從語言本質、框架生態、性能工程、工程實踐等多個維度展開深度對比&#xff0c;結合具體技術場景解析兩者的適用邊界與融合方案&#xff0c;為開發者提供系…

【OpenGL學習】(一)創建窗口

文章目錄 【OpenGL學習】&#xff08;一&#xff09;創建窗口 【OpenGL學習】&#xff08;一&#xff09;創建窗口 GLFW OpenGL 本身只是一套圖形渲染 API&#xff0c;不提供窗口創建、上下文管理或輸入處理的功能。 GLFW 是一個支持創建窗口、處理鍵盤鼠標輸入和管理 OpenGL…