首页 > 其他分享 >Spring Cloud 7.1: 会话保持

Spring Cloud 7.1: 会话保持

时间:2024-09-19 16:55:19浏览次数:11  
标签:7.1 Spring redis springframework service2 session org import Cloud

会话保持是微服务绕不开的一个话题。

在spring cloud中采用redis保存session信息的方式来保持会话。

接下来我们在前面工程的基础上配置一下redis,实现会话保持。

首先看一下保持不了的会话是什么样。

在service1和service2中分别新建会话模块,创建ConversationController

service1 ConversationController

package com.hao1st.service1.biz.conversation.controller;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/c")
public class ConversationController {

    @GetMapping("/session")
    public String index(HttpServletRequest request) {

        HttpSession session = request.getSession();
        return "service1的会话ID为:" + session.getId();
    }
}

service2 ConversationController

package com.hao1st.service2.biz.conversation.controller;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/c")
public class ConversationController {

    @GetMapping("/session")
    public String index(HttpServletRequest request) {

        HttpSession session = request.getSession();
        return "service2的会话ID为:" + session.getId();
    }
}

依次启动eureka、gateway、service1、service2,并分别访问这两个controller,可以看到两次访问是不同的会话ID

Spring Cloud 7.1: 会话保持_会话保持

Spring Cloud 7.1: 会话保持_redis_02

可以看到,这俩session id不一样。

那就让他一样。

需要在microservices中添加如下依赖:

implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.session:spring-session-data-redis'

在两个service的application.yml中添加redis的配置,注意:redis需要自己提前准备好。

spring:
  application:
    name: service2
  data:
    redis:
      host: 127.0.0.1
      port: 6379
      password: 123456
      lettuce:
        pool:
          max-active: 8
          max-wait: -1ms
          max-idle: 8
          min-idle: 0
      database: 0

spring.data下是redis配置,跟spring.application同级。

再次运行service1和service2,访问controller,id同了~

Spring Cloud 7.1: 会话保持_会话保持_03

Spring Cloud 7.1: 会话保持_redis_04

标签:7.1,Spring,redis,springframework,service2,session,org,import,Cloud
From: https://blog.51cto.com/u_8549061/12057821

相关文章

  • springboot大学生科创项目在线管理系统的设计与实现
    大家好,我是永钊,一个混迹在java圈的码农,今天要和大家聊的是一款基于springboot的大学生科创项目在线管理系统,项目源码请联系永钊,目前有各类成品毕设javawebsshssmspringboot等等项目框架,源码丰富。专业团队,咨询就送开题报告,活动限时免费,有需要的朋友可以来留言咨询。本......
  • 基于SpringBoot的旅游信息管理系统+LW示例参考
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 基于SpringBoot+Vue的医疗服务管理系统+原生微信小程序+LW示例参考
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • spring @cacheable 注解使用spel表达式
    这里主要讲一下复杂的spel表达式,简单的不写了解析集合集合需要先自定义一个方法,比如getAuthorsName,然后在注解里通过root.target.getAuthorsName把方法引用进去publicclassBookService{publicStringgetAuthorsName(List<Author>authors){returnauthors.s......
  • mysql事务隔离级别和spring事务传播机制
    一、事务并发会出现的三个问题数据库事务具有ACID4个特性:A:Atomic,原子性,将所有SQL作为原子工作单元执行,要么全部执行,要么全部不执行;C:Consistent,一致性,事务完成后,所有数据的状态都是一致的,即A账户只要减去了100,B账户则必定加上了100;I:Isolation,隔离性,如果有多个事务并发执行,每个......
  • Spring Cloud Gateway CORS 方案
    问题在SpringCloud项目中,前后端分离目前很常见,在调试时,会遇到两种情况的跨域:前端页面通过不同域名或IP访问微服务的后台,例如前端人员会在本地起HttpServer直连后台开发本地起的服务,此时,如果不加任何配置,前端页面的请求会被浏览器跨域限制拦截,所以,业务服务常常会添加如下代码设置......
  • mybatis 通过工厂模式将mapper接口的代理对象注入spring容器中
    MapperFactoryBean是MyBatis框架中用于创建Mapper对象的一个工厂类。getObject方法是该工厂类中的一个关键方法,用于返回实际的Mapper对象。具体来说,MapperFactoryBean通过getObject方法来创建和初始化Mapper接口的实现,从而可以在Spring容器中注入和使用这些Mappe......
  • 第十一章 【后端】商品分类管理微服务(11.4)——spring-boot-devtools
    11.4spring-boot-devtools官网:https://docs.spring.io/spring-boot/reference/using/devtools.htmlSpringBootDevTools是SpringBoot提供的一组易于使用的工具,旨在加速开发和测试过程。它通过提供一系列实用的功能,如自动重启、实时属性更新、依赖项的热替换等,极大地......
  • springboot+vue音乐网站【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网的飞速发展,音乐已成为人们日常生活中不可或缺的一部分。传统音乐获取方式如购买CD、磁带等逐渐淡出市场,取而代之的是更为便捷、多样的在线音乐服务。当前市场上虽已存在众多音乐网站,但它们在用户体验、歌曲分类的精细化、歌......
  • springboot+vue音乐网站【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,数字音乐已成为人们日常生活中不可或缺的一部分。音乐网站作为数字音乐传播的重要平台,不仅为用户提供了便捷的音乐获取渠道,还通过丰富的功能和个性化的服务,极大地丰富了人们的音乐体验。然而,当前市场上的音乐......