文档章节

SpringBoot 集成 Spring Session

超龍
 超龍
发布于 2017/09/03 09:29
字数 649
阅读 300
收藏 5

Spring-Session是通过过滤器实现的session共享,具体原理可以自己去官网查,这里只说一下如何配置。整个项目基于Spring Boot,如果不是Boot项目就需要自己去调整了。

项目需要先准备一个Redis服务,在本地启动一个即可。还需要有一个已经使用session但是未做session共享的Spring Boot项目,下面我就讲述一下如何给这个项目加上基于redis的session共享。

引入依赖
首先,要在maven中加入以下依赖:

<!–spring boot 与redis应用基本环境配置 –>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<!–spring session 与redis应用基本环境配置,需要开启redis后才可以使用,不然启动Spring boot会报错 –>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>

这些就是Spring-Session和Redis相关的依赖。

配置Redis
在项目目前在使用的properties文件中,加入如下配置:

spring.redis.host=192.168.0.124
spring.redis.port=6379

host就是redis地址,port为端口号。

Spring配置
在项目的目录中,创建一个Config.java文件(名称随意)

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@Configuration
//maxInactiveIntervalInSeconds为SpringSession的过期时间(单位:秒)
@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 1800)
public class SessionConfig {
//冒号后的值为没有配置文件时,制动装载的默认值
@Value(“${redis.hostname:192.168.0.124}”)
String HostName;
@Value(“${redis.port:6379}”)
int Port;
@Bean
public JedisConnectionFactory connectionFactory() {
JedisConnectionFactory connection = new JedisConnectionFactory();
connection.setPort(Port);
connection.setHostName(HostName);
return connection;
}
}

@EnableRedisHttpSession这个注解就是最重要的东西,加了它之后,spring生产一个新的拦截器,用来实现Session共享的操作,具体实现这里暂不展开。而配置的这个Bean,则是让Spring根据配置文件中的配置连到Redis。

如果不使用Security,下面的几步就不用做了,这个类中配置的Bean也不用配置。

Spring Security 配置
在项目中添加该类:

public class SecurityInitializer extends AbstractSecurityWebApplicationInitializer {

public SecurityInitializer() {
super(SecurityConfig.class, Config.class);
}
}

super()的第二个参数,就是我们上面的那个Config文件。添加这个配置文件后,Spring Security就会把Session放到Redis中,这样基于Spring Security的项目也可以实现Session共享了。

Initializer 配置
这一步写法异常简单,还是创建文件:

public class Initializer extends AbstractHttpSessionApplicationInitializer {

}

就这样,继承一个类即可。

大功告成!简单的超乎想像,这就是Spring Boot的优势所在。

下面编写测试代码:

运行项目,然后访问测试页面。

然后看看redis里面有没有session数据。

用redis管理工具看到redis里面已经有数据了。说明配置成功啦!

© 著作权归作者所有

共有 人打赏支持
超龍
粉丝 1
博文 30
码字总数 8618
作品 0
朝阳
私信 提问
springboot权限、session管理

大家好现在springboot都用什么管理权限以及session共享啊? 是 springboot + shiro 这个能实现session共享吗?多服务器的 还是 springboot + springsecurity + spring session? 还有 spring...

樱木花道VS康
06/28
0
0
Spring Boot学习笔记

RabbitMQ RabbitMQ 安装 linux安装RabbitMQ详细教程 Ubuntu 16.04 RabbitMq 安装与运行(安装篇) ubantu安装rabbitMQ步骤 多线程 Spring @transactional注解和synchronized同步锁同时使用不...

OSC_fly
07/26
0
0
springboot + shiro 权限注解、请求乱码解决、统一异常处理

springboot + shiro 权限注解、请求乱码解决、统一异常处理 前篇 后台权限管理系统 相关: spring boot + mybatis + layui + shiro后台权限管理系统 springboot + shiro之登录人数限制、登录...

wyait
06/06
0
0
spring boot整合Websocket笔记

特别说明:自学笔记 使用websocket有两种方式: 使用sockjs, 使用h5的标准。 使用Html5标准自然更方便简单,所以记录的是配合h5的使用方法。 1、pom.xml中添加如下: 核心是@ServerEndpoint...

jackcooper2015
2017/12/28
0
0
学习 Spring Boot 知识看这一篇就够了

从2016年因为工作原因开始研究 Spring Boot ,先后写了很多关于 Spring Boot 的文章,发表在技术社区、我的博客和我的公号内。粗略的统计了一下总共的文章加起来大概有六十多篇了,其中一部分...

ityouknow
05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

高并发编程:解析HashMap

底层实现原理 在JDK1.8以前版本中,HashMap的实现是数组+链表,它的缺点是即使哈希函数选择的再好,也很难达到元素百分百均匀分布,而且当HashMap中有大量元素都存到同一个桶中时,这个桶会有...

小刀爱编程
30分钟前
0
0
程序员请不要假装很努力,因为结果不会陪你演戏

前言: 我一直相信这样一句话:真正的危机,来源于在正确的时间做不正确的事。没有在正确的时间,为下一步做出积累,这才是危机的根源。 比如,当你迈过了30岁这个坎,你的能力还局限于程序的...

Java干货分享
35分钟前
2
0
Fio随机读IOPS测试值可能偏大的原因分析

问题描述: 在使用fio进行虚拟机磁盘(Ceph的RBD,格式化为ext4文件系统)的IOPS测试时,发现randread比预估值高许多; 在使用相同参数进行randwrite测试之后,再进行randread时会出现此现象...

LastRitter
39分钟前
2
0
JavaScript引用类型Object常见用法实例分析

1、JavaScript数据类型 (1)基本类型 5种基本类型:Undefined、Null、Boolean、Number、String (2)引用类型 5种引用类型:Object、Array、Date、RepExp、Function (3)基本类型与引用类型的异同...

peakedness丶
46分钟前
1
0
教你理清SpringBoot与SpringMVC的关系

spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc。spring mvc 是只是spring 处理web层请求的一个模块。因此他们的关系大概就是这...

别打我会飞
51分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部