【SpringBoot】18、SpringBoot中使用Session共享实现分布式部署

【SpringBoot】18、SpringBoot中使用Session共享实现分布式部署前言 我们知道 在单体项目中 我们将用户信息存在 session 中 那么在该 session 过期之前 我们都可以从 session 中获取到用户信息 通过登录拦截 进行操作但是分布式部署的时候 我们请求的服务器可能不是同一台服务器 那么我们就必须要面对 session 共享的问题 下面介绍的是在 SpringBoot 实现 session 共享的方式一 创建项目创建 SpringBoot 项目 选择 Maven 依赖最终 pom xml 文件如下 redis 的依赖 g

前言:我们知道,在单体项目中,我们将用户信息存在 session 中,那么在该 session 过期之前,我们都可以从 session 中获取到用户信息,通过登录拦截,进行操作
但是分布式部署的时候,我们请求的服务器可能不是同一台服务器,那么我们就必须要面对 session 共享的问题,下面介绍的是在 SpringBoot 实现 session 共享的方式

一、创建项目

<!-- 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 实现 session 共享,所以我们需要在配置文件中配置 redis 的信息

server: port: 8080 spring: 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; @RestController public 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 中取出信息

四、打包测试

打包
启动项目,分别启动在两个端口:

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

分别启动在 8080,8081端口

由此证明,我们的 session 共享已经成功

五、分布式部署

下面我们借助 nginx 代理转发访问这两个项目

1、配置转发

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

这里配置转发到 8080,8081 端口,并配置了权重

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

拦截本地的所有请求,默认端口为 80

2、启动 nginx

nginx -s reload 

3、访问测试

http://localhost/set 

set
这里我们可以看出,由 8080 端口的服务器完成了 set 请求,多次访问,nginx 将会根据什么配置的权重参数分配服务器来完成操作

下面我们访问:

http://localhost/get 

get
可以看出,由 8081 端口的服务器完成了 get 请求,并成功取到了存在 session 中的数据,实现了 session 共享

六、总结

如您在阅读中发现不足,欢迎留言!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201984.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:09
下一篇 2026年3月20日 上午8:09


相关推荐

  • 几种web字体格式建议收藏

    目前,文字信息仍是网站最主要的内容,随着CSS3技术的不断成熟,Web字体逐渐成为话题,这项让未来Web更加丰富多彩的技术拥有多种实现方案,其中之一是通过@font-face属性在网页中嵌入自定义字体

    2021年12月20日
    42
  • 理解VUE响应式原理[通俗易懂]

    理解VUE响应式原理[通俗易懂]1、响应式原理基础响应式原理基础是基于Object.defineProperty(obj,prop,descriptor),descriptor里面可以定义get和set方法,可以在获取属性值事触发get方法(可以收集依赖),设置属性值时触发set方法(更新依赖)。扩展:上面是vue2.0的基础原理,vue3.0的基础原理是:2、核心对象:Dep与WatcherDep:vue在data里申明的每一个属性都会生成一个Dep的实例对象,De…

    2022年4月30日
    34
  • YIQ颜色空间_简述RGB颜色

    YIQ颜色空间_简述RGB颜色首先,我们先来了解下有关颜色的基本概念一、色彩的基本概念1、彩色的三要素亮度:即人眼对光的明亮程度的感受。色调:人眼能看到的颜色种类,与光的波长有关饱和度:颜色深浅程度。与各种颜色混入白光的比例有关。以上色调+饱和度=色度2、三基色原理三基色可以通过适当比例的混合组成自然界中任何一种颜色由于人眼对于红绿蓝三种色光最为敏感,并且由这三种颜色能组成的颜色范围最广,故一般选用…

    2025年7月9日
    5
  • 正则表达式验证ip地址_ip地址的正则表达式

    正则表达式验证ip地址_ip地址的正则表达式正则表达式验证ip是否是内网ip:正则表达式:^(127\.0\.0\.1)|(localhost)|(10\.\d{1,3}\.\d{1,3}\.\d{1,3})|(172\.((1[6-9])|(2\d)|(3[01]))\.\d{1,3}\.\d{1,3})|(192\.168\.\d{1,3}\.\d{1,3})$

    2025年11月14日
    6
  • 从零配置 OpenClaw 飞书机器人:我的踩坑与成功之旅

    从零配置 OpenClaw 飞书机器人:我的踩坑与成功之旅

    2026年3月13日
    3
  • Pycharm 使用 Pipenv 新建的虚拟环境

    Pycharm 使用 Pipenv 新建的虚拟环境目录什么是 Pycharm 什么是 Pipenv 如何在 Pycharm 中使用 Pipevn 生成的虚拟环境使用 Pipenv 生成虚拟环境使用 Pycharm 连接虚拟环境什么是 PycharmPycha 是目前最好用的 Python 编辑器 自带文本高亮 版本管理 数据库连接 断点调试 虚拟环境和包管理的多功能编辑器什么是 Pipenvpipenv 是 Pipfile 主要倡导者 r

    2026年3月27日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号