首页 > 其他分享 >SpringBoot2 使用Spring Session集群

SpringBoot2 使用Spring Session集群

时间:2022-11-30 12:04:58浏览次数:38  
标签:http Session spring Spring springframework session SpringBoot2 org import

有几种办法:

1.扩展指定server
利用Servlet容器提供的插件功能,自定义HttpSession的创建和管理策略,并通过配置的方式替换掉默认的策略。缺点:耦合Tomcat/Jetty等Servlet容器,不能随意更换容器。

2.利用Filter
利用HttpServletRequestWrapper,实现自己的 getSession()方法,接管创建和管理Session数据的工作。spring-session就是通过这样的思路实现的。

3 利用spring session

Spring Boot中spring session支持方式:

JDBC、MongoDB、Redis、Hazelcast、HashMap

一、引入maven依赖

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<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>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

</dependencies>

二、配置application.properties

server.port=8080
spring.redis.host=localhost
spring.redis.port=6379

# spring session使用存储类型
spring.session.store-type=redis
  • spirngboot默认就是使用redis方式,如果不想用可以填none。、

三、在启动类中加入@EnableRedisHttpSession  注解

SpringBoot2 使用Spring Session集群_spring

package com.shyroke;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@EnableCaching
@EnableRedisHttpSession
@SpringBootApplication
public class SpringbootSessionApplication {

public static void main(String[] args) {
SpringApplication.run(SpringbootSessionApplication.class, args);
}
}

SpringBoot2 使用Spring Session集群_spring

四、编写控制器

SpringBoot2 使用Spring Session集群_spring

package com.shyroke.controller;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping(value = "/")
public class IndexController {

@ResponseBody
@RequestMapping(value = "/session")
public Map<String, Object> getSession(HttpServletRequest request) {
request.getSession().setAttribute("username", "admin");
Map<String, Object> map = new HashMap<String, Object>();
map.put("sessionId", request.getSession().getId());
return map;
}

@ResponseBody
@RequestMapping(value = "/get")
public String get(HttpServletRequest request) {
String userName = (String) request.getSession().getAttribute("username");

return userName;
}

}

SpringBoot2 使用Spring Session集群_spring

五、测试

  • 先输入http://localhost:8080/session,在session中设置一个值

SpringBoot2 使用Spring Session集群_redis_05

SpringBoot2 使用Spring Session集群_java_06



  • 复制这个工程,application.properties中的server.port=8081,然后访问“http://localhost:8081/get”,如下获取到了另一个工程中设置的session的值。

 

SpringBoot2 使用Spring Session集群_redis_07

 

源码面前,了无秘密



标签:http,Session,spring,Spring,springframework,session,SpringBoot2,org,import
From: https://blog.51cto.com/zhenghongxin/5898201

相关文章

  • SpringBoot2 web
    验证框架SpringBoot支持JSR-303,Bean等验证框架JSR-303JSR-303是Java的标准验证框架,已有实现Hibernatevalidator.JSR-303验证类型空检查@Null验证对象是否为null@Not......
  • SpringBoot JWT
    JWT是一种鉴权机制,实现前后端分离登陆和权限的一种解决方式,用户在登陆之后后端生成token传到前端,以后每次的请求都携带着token到后端验证,如果过期或者失效就要求重新登陆......
  • Spring Boot + @Async 太好用了,助你大大提升 API 并发能力!
    来源:https://developer.aliyun.com/article/694020异步调用几乎是处理高并发Web应用性能问题的万金油,那么什么是“异步调用”?“异步调用”对应的是“同步调用”,同步调用......
  • 《Spring Boot 实战:从0到1》第1章 快速开始Hello World
    第1章快速开始HelloWorld大约20年前,程序员们使用“企业级JavaBean”(EJB)开发企业应用,需要配置复杂的XML。在二十世纪初期,新兴Java技术——Spring,横空出世。使用极简XML和P......
  • idea创建SpringBoot项目时,Type 选择 maven project 和maven pom 有什么区别?
    https://blog.csdn.net/bin_0203/article/details/121841615 在操作到Type选项时有四种项目类型可供选择:MavenProject(GenerateaMavenbasedprojectarchive)M......
  • 2022-12-30Spring-1
    1.静态资源配置原理SpringBoot启动默认加载xxxAutoConfiguration类(自动配置类)。SpringMVC功能的自动配置类WebMvcAutoConfiguration生效,给容器中配置了什么。配置文件......
  • 建立一个Springboot的测试环境
    /***Createdbyteston2022/09/310:29*/importcom.jeesite.modules.Application;importorg.junit.runner.RunWith;importorg.springframework.boot.test.......
  • Spring Boot+Mybatis:实现数据库登录注册与两种properties配置参数读取
    〇、参考资料1、hutool介绍https://blog.csdn.net/abst122/article/details/1240913752、SpringBoot+Mybatis实现登录注册https://www.cnblogs.com/wiki918/p/1622175......
  • SpringCloud01
    SpringCloud011.认识微服务随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?1.0.学习目......
  • 开发SpringBoot+Jwt+Vue的前后端分离后台管理系统VueAdmin - 前端笔记
    一个springsecurity+jwt+vue的前后端分离项目!综合运用!关注公众号MarkerHub,回复【VueAdmin】可以加群讨论学习、另外还会不定时安排B站视频直播答疑!首发公众号......