千家信息网

基于Spring-Session如何实现会话共享

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,今天就跟大家聊聊有关基于Spring-Session如何实现会话共享,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前段时间,在对项目权限框架调
千家信息网最后更新 2026年11月01日基于Spring-Session如何实现会话共享

今天就跟大家聊聊有关基于Spring-Session如何实现会话共享,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

前段时间,在对项目权限框架调整的时候(SpringSecurity改成Shiro),集成了SpringSession小插件。

由于现今本项目某些特性,暂时无法进行分布式部署,所以对SpringSession并没有进行深入测试以及生产上部署应用,这里只是记录整合的过程以及一些心得。

网上也看到一些同学说SpringSession存在一些坑,比如无法实现跨域Session共享,然后通过修改其Cookie生产策略可以进行解决等,因此在生产使用之前,还需进行充分的测试。

学习@Configuration、@Bean两个Spring注解:

Spring中为了减少xml中配置,引入了@Configuration和@Bean注解类。@Configuration注解的类,等价于XML中配置beans,表明这个类是beans定义的源;@Bean注解的方法等价于XML中配置的bean,该方法创建出的实例由Ioc容器管理。

SpringSession核心的配置类为SpringHttpSessionConfiguration(框架也默认提供了Redis、Mongo、Jdbc等实现,本项目使用RedisHttpSessionConfiguration)。RedisHttpSessionConfiguration类中最重要的两个操作就是创建springSessionRepositoryFilter以及sessionRedisTemplate。在创建sessionRedisTemplate时框架会依赖解析RedisConnectionFactory,所以在Spring配置中我们需要定义RedisConnectionFactory;springSessionRepositoryFilter是SpringSession的核心,也是web.xml中Filter代理,整个Session的获取以及提交都在其里实现。

以下是整个配置的过程:

1、applicationContext-session.xml配置如下:

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

2、属性文件config.properties配置如下:

## redis pool configredis.pool.maxTotal=100redis.pool.maxIdle=20redis.pool.minIdle=10redis.pool.blockWhenExhausted=trueredis.pool.maxWaitMillis=3000redis.pool.testOnBorrow=falseredis.pool.testOnReturn=falseredis.pool.testWhileIdle=trueredis.pool.minEvictableIdleTimeMillis=60000redis.pool.timeBetweenEvictionRunsMillis=30000redis.pool.numTestsPerEvictionRun=-1# redis configredis.host=192.168.0.123redis.port=6379redis.password=admin-123456redis.database=0redis.timeout=3600

3、web.xml配置如下:

        editor                        contextConfigLocation                classpath:spring/applicationContext.xml,classpath:spring/applicationContext-security.xml                                  org.jasig.cas.client.session.SingleSignOutHttpSessionListener                                  org.springframework.web.context.ContextLoaderListener                                org.springframework.web.util.IntrospectorCleanupListener                                org.springframework.web.context.request.RequestContextListener                                                CAS Single Sign Out Filter                com.wuzb.pw.common.shiro.CustomSingleSignOutFilter                                CAS Single Sign Out Filter                /*                                                CharacterEncodingFilter                org.springframework.web.filter.CharacterEncodingFilter                                        encoding                        utf-8                                                        forceEncoding                        true                                                CharacterEncodingFilter                /*                                        shiroFilter                org.springframework.web.filter.DelegatingFilterProxy                true                                        targetFilterLifecycle                        true                                                shiroFilter                /*                                        springSessionRepositoryFilter                org.springframework.web.filter.DelegatingFilterProxy                                springSessionRepositoryFilter                /*                                 dispatcherServlet                org.springframework.web.servlet.DispatcherServlet                                        contextConfigLocation                        classpath:spring/applicationContext-mvc.xml                                                dispatcherServlet                /                                                        

项目中使用的Spring版本4.1.6.RELEASE。其中集成Spring Session所需的Jar如下:

spring-data-commons-1.12.3.RELEASE.jar
spring-data-keyvalue-1.1.3.RELEASE.jar
spring-data-redis-1.7.1.RELEASE.jar
spring-session-1.2.2.RELEASE.jar
spring-session-data-redis-1.2.2.RELEASE.jar
jedis-2.8.1.jar

需要注意的点:

spring-session-data-redis-1.2.2.RELEASE.jar默认依赖spring-data-redis-1.7.1.RELEASE.jar,

若使用spring-data-redis-1.7.3.RELEASE或者更高版本的会出现如下异常:

Caused by: java.lang.NoSuchMethodError: org.springframework.core.serializer.support.DeserializingConverter.(Ljava/lang/ClassLoader;)V        at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.(JdkSerializationRedisSerializer.java:53)        at org.springframework.data.redis.core.RedisTemplate.afterPropertiesSet(RedisTemplate.java:119)        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)        ... 49 more

在处理分布式Session的案例中,有很多种解决方案。例如基于Tomcat中间件(TomcatRedisSessionManager)基于服务器基本做会话共享(局限大);基于SpringSession插件实现Session共享;若使用Shiro权限框架还可以自己实现SessionDao来实现Session共享。这些在后续时间里,再继续探索。

看完上述内容,你们对基于Spring-Session如何实现会话共享有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

配置 框架 注解 项目 内容 生产 两个 分布式 插件 方法 时间 权限 核心 版本 等价 过程 测试 重要 中间件 只是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 互联网的科技 互联网络科技有限公司 广州互联网科技公司 菲比寻常互联网科技 互联网科技大会 亿人帮互联网科技 上海卓越科技 互联网 科技与互联网哪个更好 青岛科技大学互联网大赛研究生 宜昌元轩互联网科技有限公司 呼和浩特新华互联网科技学院 互联网科技创新的路径 工业互联网等科技实现智能化赋能 朱啸虎曾投资哪些互联网科技企业 广东工业互联网大赛深圳学泰科技 厦门江牛科技互联网 互联网科技快讯热点 中国互联网公司的科技投入 第三届互联网大会安防黑科技 西安纸贵互联网科技有限公司 善班互联网科技有限公司 有木互联网科技 长亮科技互联网金融 深圳期待互联网科技 互联网科技股午盘股票涨跌 互联网公司会议桌创意科技软装饰 互联网科技博主是什么意思 互联网科技企业商标注意事项 求路客互联网科技电话
0