spring boot 入门之整合spring session实现session共享

教程分享 > Java教程 > Spring (15217) 2024-08-07 11:05:25

一.前言

  spring boot 入门之整合spring session实现session共享。一直以来Javaweb项目中的session共享问题都是一个很难解决的问题。原因是session是由启动servlet的当前web容器所创建和管理。与其他地方的web容器很难通讯。导致无法共享也就很难实现集群化。这里将通过spring boot整合spring session的方案,将session存入分布式缓存Redis中实现session的共享。

二.编码

pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>net.xqlee.project</groupId>
	<artifactId>demo-springboot-spring-session</artifactId>
	<version>1.0</version>
	<packaging>jar</packaging>

	<name>demo-springboot-spring-session</name>
	<description>lee-leftso-v2.0</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.8.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<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</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
</project>
核心配置类,HttpSessionConfig:
package net.xqlee.project.config;

import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

/** 启用redis session **/
/***
 * 
 * @author xqlee maxInactiveIntervalInSeconds设置session超时时间,默认1800秒
 */
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
public class HttpSessionConfig {
	// spring boot项目可以直接配置application配置文件自动注册redis connect 工厂
	// 非boot项目则需要再这里配置一下redis得链接工厂
}
编写一个测试的controller,TestController:
package net.xqlee.project.controller;

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

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

	@GetMapping("/test.do")
	public Object testSession(HttpServletRequest request) {
		Map<String, Object> obj = new HashMap<>();
		obj.put("result", true);
		request.getSession().setAttribute("time", new Date().getTime());
		obj.put("time", request.getSession().getAttribute("time"));
		return obj;
	}

}

application配置文件配置redis的链接信息

spring.redis.host=10.1.1.2
spring.redis.password=
spring.redis.port=6379

具体的redis配置信息根据自己的环境改变

三.测试

启动spring boot项目,注意观察启动日志
启动日志
从上方日志可以看到springSessionRepositoryFilter已经启用

在浏览器中访问测试controller的地址test.do
通过谷歌浏览器的调试模式可以看到SESSION的cookie
cookie
再通过redis的可视化链接工具链接过去查看:
session redis
上图可以看到:
  • session id和浏览器中的对应;
  • 自己添加的time属性;
到这里spring  boot 整合spring session 通过redis的方式持久化完成。

 
https://www.leftso.com/article/298.html

相关文章
spring boot 入门之整合spring session实现session共享。一直以来Java编程中web项目中的session共享问题都是一个很难解决的问题。接下来将讲解通过sprin...
spring boot 入门之spring session实现restful apis。通过spring boot或者spring mvc整合spring session的方式来实现sessio...
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
Spring Boot 2.0,Spring框架的Spring Boot 中的Spring Boot Actuator变化讲解。并且了解如何在Spring Boot 2.0中使用Actuator...
spring boot 1.5整合redis实现spring的缓存框架,spring boot,redis
Spring Boot 2.0 绑定properties属性资源文件 Spring Boot 2.0 读取properties配置文件值 Spring Boot 2.0获取properties配...
spring boot入门,spring boot是一个崭新的spring框架分支项目,本文讲解其属性配置相关
spring boot是一个崭新的spring框架分支项目,本文讲解基本的数据库配置
spring boot mybatis 整合使用讲解介绍,spring boot与MyBatis的使用讲解介绍。spring boot mybatis xml mapper方式的入门和通过一个简...
spring boot又一个spring框架的经典项目,本文讲解spring boot入门的环境配置以及第一个项目,Spring Boot 入门教程
Spring Boot validation整合hibernate validator实现数据验证,Spring Boot validation使用说明,Spring Boot validat...
Spring Boot 2.0 Redis整合,通过spring boot 2.0整合Redis作为spring缓存框架的实现。
spring boot 导入本地jar包spring boot maven 打war包时候导入本地jar包
spring boot框架整合MyBatis数据库暂时选用MySQL
spring boot是一个崭新的spring框架分支项目,本文讲解spring boot中controller的常用注解使用