亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot集成redis實(shí)現(xiàn)共享存儲(chǔ)session

 更新時(shí)間:2024年03月18日 09:55:12   作者:咸魚不閑.s  
這篇文章主要介紹了SpringBoot集成redis實(shí)現(xiàn)共享存儲(chǔ)session的流程步驟,文中通過代碼示例介紹的非常詳細(xì),并總結(jié)了一些常見的錯(cuò)誤及解決方法,需要的朋友可以參考下

redis實(shí)現(xiàn)共享存儲(chǔ)session

  • 首先下載redis,我下載的版本是5.0.14,目前官網(wǎng)貌似找不到5.x版本,可以自行去網(wǎng)上尋找。我這里的springboot版本是2.6.4
  • 引入redis依賴
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>2.6.4</version>
</dependency>
  • 引入 spring-session 和 redis 的整合
<!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>2.6.3</version>
</dependency>
  • 修改 spring-session 存儲(chǔ)配置 spring.session.store-type
spring:
  session:
    timeout: 86400 #過期時(shí)間:24h
    store-type: redis #存儲(chǔ)類型redis

正常做完這些就可以實(shí)現(xiàn)共享存儲(chǔ)session
但是我遇到一些問題:

自定義的Session存儲(chǔ)庫(SessionRepository)和@EnableRedisHttpSession注解沖突

配置好redis -session但是登錄后,redis中并沒有存儲(chǔ)session

原因: 在之前解決跨域訪問出現(xiàn)的Set-Cookie:SameSite=Lax 問題是,在網(wǎng)上引入了SessionConfig 配置類:

import org.springframework.boot.autoconfigure.session.DefaultCookieSerializerCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.MapSessionRepository;
import org.springframework.session.SessionRepository;
import org.springframework.session.config.annotation.web.http.EnableSpringHttpSession;
import org.springframework.session.web.http.DefaultCookieSerializer;
 
import java.util.concurrent.ConcurrentHashMap;
 
@Configuration
@EnableSpringHttpSession
public class SessionConfig {
    @Bean
    public SessionRepository sessionRepository() {
        return new MapSessionRepository(new ConcurrentHashMap<>());
    }
 
    @Bean
    DefaultCookieSerializerCustomizer cookieSerializerCustomizer() {
        return new DefaultCookieSerializerCustomizer() {
            @Override
            public void customize(DefaultCookieSerializer cookieSerializer) {
                cookieSerializer.setSameSite("None");
                cookieSerializer.setUseSecureCookie(true);
            }
        };
    }
}

可以看到該配置類里面引用了@EnableSpringHttpSession注解,并且建了一個(gè)名為sessionRepository的Bean,其作用是為Spring應(yīng)用程序配置一個(gè)自定義的Session存儲(chǔ)庫(SessionRepository)。

使用了MapSessionRepository,它是Spring Session提供的一種內(nèi)存存儲(chǔ)方式,用于將Session數(shù)據(jù)存儲(chǔ)在JVM內(nèi)存中。通過傳入ConcurrentHashMap作為構(gòu)造函數(shù)的參數(shù),實(shí)際上是在內(nèi)存中創(chuàng)建了一個(gè)并發(fā)安全的Map,用于存儲(chǔ)Session對象。
通常情況下,默認(rèn)情況下Spring Session會(huì)將Session存儲(chǔ)在類似Redis、MongoDB等外部持久化存儲(chǔ)中,但是通過這段代碼,我們可以將Session存儲(chǔ)在內(nèi)存中,這對于某些特定場景(比如開發(fā)和測試)可能會(huì)很有用。

但是現(xiàn)在,我們已經(jīng)在application.yml配置文件中配置存儲(chǔ)類型是redis,這導(dǎo)致SessionConfig中的sessionRepository覆蓋掉了配置文件中的配置,導(dǎo)致session并沒有存儲(chǔ)到redis中 。

同時(shí),如果在application.yml配置文件中配置已經(jīng)配置好了session,就不要使用@EnableSpringHttpSession注解,我添加以后出現(xiàn)了以下報(bào)錯(cuò)

意思是我定義了重復(fù)的bean,@EnableRedisHttpSession注解和application.yml文件中的session配置存在沖突,特別是在指定存儲(chǔ)類型、超時(shí)時(shí)間等方面。兩者的配置不一致或沖突,導(dǎo)致應(yīng)用程序?qū)ession的處理出現(xiàn)問題。

現(xiàn)在去掉sessionRepository方法和@EnableRedisHttpSession注解,在進(jìn)行測試,session成功存儲(chǔ)在redis中

到此這篇關(guān)于SpringBoot集成redis實(shí)現(xiàn)共享存儲(chǔ)session的文章就介紹到這了,更多相關(guān)SpringBoot redis共享session內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring源碼之事件監(jiān)聽機(jī)制(實(shí)現(xiàn)EventListener接口方式)

    Spring源碼之事件監(jiān)聽機(jī)制(實(shí)現(xiàn)EventListener接口方式)

    這篇文章主要介紹了Spring源碼之事件監(jiān)聽機(jī)制(實(shí)現(xiàn)EventListener接口方式),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • javaDSL簡單實(shí)現(xiàn)示例分享

    javaDSL簡單實(shí)現(xiàn)示例分享

    DSL領(lǐng)域定義語言,用來描述特定領(lǐng)域的特定表達(dá)。比如畫圖從起點(diǎn)到終點(diǎn);路由中的從A到B。這是關(guān)于畫圖的一個(gè)簡單實(shí)現(xiàn)
    2014-03-03
  • 圖文詳解如何將java編寫的程序轉(zhuǎn)為exe文件

    圖文詳解如何將java編寫的程序轉(zhuǎn)為exe文件

    我們寫的程序,要讓小伙伴打開即用,可以將java程序生成可執(zhí)行文件,下面這篇文章主要給大家介紹了關(guān)于一步步教你如何將java編寫的程序轉(zhuǎn)為exe文件的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Java過濾器與監(jiān)聽器間區(qū)別與聯(lián)系

    Java過濾器與監(jiān)聽器間區(qū)別與聯(lián)系

    監(jiān)聽器是一個(gè)接口內(nèi)容由我們實(shí)現(xiàn),會(huì)在特定時(shí)間被調(diào)用,監(jiān)聽器用于監(jiān)聽web應(yīng)用中三大域?qū)ο?request,session,application),信息的創(chuàng)建,銷毀,增加,修改,刪除等動(dòng)作的發(fā)生,然后做出相應(yīng)的響應(yīng)處理
    2023-01-01
  • IDEA集成MyBatis Generator插件的使用

    IDEA集成MyBatis Generator插件的使用

    這篇文章主要介紹了IDEA集成MyBatis Generator插件的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • java EasyExcel面向Excel文檔讀寫邏輯示例詳解

    java EasyExcel面向Excel文檔讀寫邏輯示例詳解

    這篇文章主要為大家介紹了java EasyExcel面向Excel文檔讀寫邏輯示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Idea安裝及涉及springboot詳細(xì)配置的圖文教程

    Idea安裝及涉及springboot詳細(xì)配置的圖文教程

    這篇文章主要介紹了Idea安裝及涉及springboot詳細(xì)配置,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • MyBatis的一級緩存和二級緩存以及優(yōu)點(diǎn)說明

    MyBatis的一級緩存和二級緩存以及優(yōu)點(diǎn)說明

    MyBatis的緩存機(jī)制包括一級緩存和二級緩存,一級緩存是SqlSession級別的緩存,開啟默認(rèn),二級緩存是跨SqlSession的緩存,需要手動(dòng)開啟和配置,二級緩存的優(yōu)點(diǎn)是減少數(shù)據(jù)庫訪問、提高性能、降低負(fù)載和提高可擴(kuò)展性,同時(shí)需要注意緩存可能導(dǎo)致的數(shù)據(jù)不一致問題
    2025-02-02
  • 從繁瑣到簡潔的Jenkins?Pipeline腳本優(yōu)化實(shí)踐

    從繁瑣到簡潔的Jenkins?Pipeline腳本優(yōu)化實(shí)踐

    這篇文章主要為大家介紹了從繁瑣到簡潔的Jenkins?Pipeline腳本優(yōu)化實(shí)踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Java讀取DBF文件(GBK編碼)的方法

    Java讀取DBF文件(GBK編碼)的方法

    在Java開發(fā)中,有時(shí)需要讀取DBF(dBase文件)格式的數(shù)據(jù)文件,而這些文件通常采用GBK(簡體中文)編碼,本文將介紹如何使用Java讀取采用GBK編碼的DBF文件,需要的朋友可以參考下
    2024-11-11

最新評論