av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

瀏覽:2日期:2023-05-07 17:47:29

前言:我們知道,在單體項目中,我們將用戶信息存在 session 中,那么在該 session 過期之前,我們都可以從 session 中獲取到用戶信息,通過登錄攔截,進(jìn)行操作

但是分布式部署的時候,我們請求的服務(wù)器可能不是同一臺服務(wù)器,那么我們就必須要面對 session 共享的問題,下面介紹的是在 SpringBoot 實現(xiàn) session 共享的方式

一、創(chuàng)建項目

創(chuàng)建 SpringBoot 項目,選擇 Maven 依賴

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

最終 pom.xml 文件如下:

<!-- redis的依賴 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- web的依賴 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><!-- session共享的依賴 --><dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId></dependency>

二、配置 Redis

我們需要借助 redis 實現(xiàn) session 共享,所以我們需要在配置文件中配置 redis 的信息

server: port: 8080spring: redis: host: 127.0.0.1 port: 6379 database: 0 password:

我們配置了該項目的端口,以及 redis 的連接信息

三、寫接口

package com.zyxx.session.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpSession;@RestControllerpublic class DemoController { /** * 獲取項目端口 */ @Value('${server.port}') private String port; /** * 將信息存放在session中 */ @GetMapping('set') public String set(HttpSession session) { session.setAttribute('user', 'hello world~~~'); return port; } /** * 從session中獲取信息 */ @GetMapping('get') public String get(HttpSession session) { return session.getAttribute('user') + ' : ' + port; }}

我們寫了一個 set,一個 get 方法,將信息存放在 session 中,從 session 中取出信息

四、打包測試

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

啟動項目,分別啟動在兩個端口:

java -jar .session-0.0.1-SNAPSHOT.jar --server.port=8080java -jar .session-0.0.1-SNAPSHOT.jar --server.port=8081

分別啟動在 8080,8081端口

訪問:http://localhost:8080/set

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

我們從 8080 端口,將信息保存在 session 中

我們訪問:http://localhost:8081/get

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

我們在 8081 端口的項目中從 session 中取出了內(nèi)容:hello world~~~

由此證明,我們的 session 共享已經(jīng)成功

五、分布式部署

下面我們借助 nginx 代理轉(zhuǎn)發(fā)訪問這兩個項目

1、配置轉(zhuǎn)發(fā)

nginx 配置文件如下:

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

主要配置內(nèi)容:

upstream helloworld{server 127.0.0.1:8080 weight=1;server 127.0.0.1:8081 weight=2;}

這里配置轉(zhuǎn)發(fā)到 8080,8081 端口,并配置了權(quán)重

location / {proxy_pass http://helloworld; #root html; #index index.html index.htm;}

攔截本地的所有請求,默認(rèn)端口為 80

2、啟動 nginx

nginx -s reload

3、訪問測試

我們先刪除 redis 里面剛剛測試保存的信息

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

然后我們訪問:

http://localhost/set

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

這里我們可以看出,由 8080 端口的服務(wù)器完成了 set 請求,多次訪問,nginx 將會根據(jù)什么配置的權(quán)重參數(shù)分配服務(wù)器來完成操作

下面我們訪問:

http://localhost/get

SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼

可以看出,由 8081 端口的服務(wù)器完成了 get 請求,并成功取到了存在 session 中的數(shù)據(jù),實現(xiàn)了 session 共享

六、總結(jié)

1、以前我們在 SSM 架構(gòu)的項目中實現(xiàn) session 共享,需要配置三個地方 ,一個是 web.xml 配置代理過濾器,然后在 Spring 容器中配置 Redis,最后再配置 Spring Session,相比 SpringBoot,稍有復(fù)雜2、我們在 SpringBoot 中實現(xiàn) session 共享還是非常簡單的,只需要引入依賴,簡單配置即可實現(xiàn)3、實現(xiàn) session 共享,幫助我們將項目分布式部署,提升服務(wù)性能有很大的意義

到此這篇關(guān)于SpringBoot中使用Session共享實現(xiàn)分布式部署的示例代碼的文章就介紹到這了,更多相關(guān)SpringBoot Session分布式部署內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 精品日韩一区 | 成年人在线观看 | 国产精彩视频一区 | 免费激情网站 | 国产精品高潮呻吟久久 | 国产线视频精品免费观看视频 | 干干干操操操 | 日韩免费一区二区 | 尤物视频在线免费观看 | 一级视频在线免费观看 | 国产精品视频一区二区三区四区国 | 成人网视频 | 视频一区二区三区中文字幕 | 欧美激情国产精品 | 韩国欧洲一级毛片 | 久久久久久亚洲国产精品 | h视频在线观看免费 | 青娱乐国产 | 日韩福利视频 | 亚洲精品美女视频 | 国产丝袜一区二区三区免费视频 | 91色视频在线观看 | 91在线精品一区二区 | 国产视频福利在线观看 | 欧美精品一区二区在线观看 | 青青草综合网 | 国产高清一区二区三区 | av一区二区三区四区 | 蜜桃免费一区二区三区 | 日韩视频―中文字幕 | 少妇特黄a一区二区三区88av | 色婷婷av777| 欧美mv日韩mv国产网站91进入 | 欧美久久一级 | 久草电影网| 激情六月丁香婷婷 | 日本欧美国产在线 | 欧美另类视频 | 精品国产一区二区三区在线观看 | 国产精品久久九九 | 中文字幕男人的天堂 |