Spring Session + Redis实现分布式Session共享

释放双眼,带上耳机,听听看~!

实现Session共享的方案很多,有依赖容器提供的Session共享功能

本文主要介绍另一种实现Session共享的方案,不依赖于容器,而是Web配置方面,不需要增加任何的代码实现,Spring Session框架来实现Session统一存储在Redis中。只需要对现有项目进行少量配置,单机应用改为一个分布式应用。

Maven依赖

在项目中加入Spring Session的相关依赖包,包括Spring Data Redis、Jedis、Apache Commons Pool:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1<!-- Jedis -->
2<dependency>
3    <groupId>redis.clients</groupId>
4    <artifactId>jedis</artifactId>
5    <version>2.9.0</version>
6</dependency>
7<!-- Spring Data Redis -->
8<dependency>
9    <groupId>org.springframework.data</groupId>
10    <artifactId>spring-data-redis</artifactId>
11    <version>1.7.3.RELEASE</version>
12</dependency>
13<!-- Spring Session -->
14<dependency>
15    <groupId>org.springframework.session</groupId>
16    <artifactId>spring-session</artifactId>
17    <version>1.2.2.RELEASE</version>
18</dependency>
19<!-- Apache Commons Pool -->
20<dependency>
21    <groupId>org.apache.commons</groupId>
22    <artifactId>commons-pool2</artifactId>
23    <version>2.4.2</version>
24</dependency>
25
26

配置Filter

在web.xml中加入以下过滤器,Spring Session的过滤器要放在第一位。


1
2
3
4
5
6
7
8
9
10
11
12
1<filter>
2    <filter-name>springSessionRepositoryFilter</filter-name>
3    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
4</filter>
5<filter-mapping>
6    <filter-name>springSessionRepositoryFilter</filter-name>
7    <url-pattern>/*</url-pattern>
8    <dispatcher>REQUEST</dispatcher>
9    <dispatcher>ERROR</dispatcher>
10</filter-mapping>
11
12

Spring配置文件


1
2
3
4
5
6
7
8
1<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
2<bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
3   <property name="hostName" value="localhost" />
4   <property name="password" value="123456" />
5   <property name="port" value="6379" />
6   <property name="database" value="10" />
7</bean>
8

只需要以上简单的配置,至此为止即已经完成Web应用Session统一存储在Redis中,可以说是及其简单。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

安全运维

设计模式的设计原则

2021-12-12 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索