Spring Session边学边写(二)使用xml配置

本文指导如何在团队项目中使用XML配置整合Spring Session与Redis,包括加入依赖库、配置sessionrepositoryfilter、配置Springsession及Redis、部署测试以及分析优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在团队项目中我们可能使用了xml配置而非注解配置,而在xml配置中加入spring session是很简单的。

[b]1.加入依赖库[/b]
按照上一章步骤加入spring session依赖库
[b]2.配置session repository filter[/b]
在web.xml中尽量靠前的位置加入配置

<!-- tag::springSessionRepositoryFilter[] -->
<filter>
<filter-name>springSessionRepositoryFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSessionRepositoryFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- end::springSessionRepositoryFilter[] -->

可以放在<context-param>和<listener>配置下的第一个<filter>。
如果项目中已经使用了spring security,会有以下配置

<!-- spring security filter -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

则需要确定springSessionRepositoryFilter的配置在springSecurityFilterChain之前。
[b]3.配置spring session及redis[/b]
在spring配置文件中加入以下内容

<!-- tag::beans[] -->
<context:annotation-config/>
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="port" value="6379"/>
<property name="hostName" value="192.168.24.31"/>
</bean>
<!-- end::beans[] -->

第一二行会启用redis存储session并使用自带注释声明。
jedisConnectionFactory则配置远程redis缓存集群地址。
[b]4.部署测试[/b]
使用上一章的index.jsp和SessionServlet进行测试,可看到session实现已替换。
停止并重新启动tomcat后session也不会丢失。
[b]5.优缺点[/b]
spring session不依赖于web容器实现,一个会话跨tomcat、jboss都可以使用。
但因为每次请求处理前都要从远程缓存读取会话,并在处理后将会话写回缓存,所以访问速度严重依赖于内部网络及redis并发访问速度。且一旦redis停止服务,所有会话将无法访问,也不能创建新的会话。
对比其他web容器自身实现的会话共享(如jboss的基于本虚拟机infinispan缓存搭建集群的会话复制,或基于远程datagrid缓存集群的会话共享),在性能、稳定性上可能会有差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值