最近写项目,需要把session放入Redis中,来实现分布式。我本来要用Tomcat部署Redis这种方法,但是依赖于容器了。无意中发现了SpringSession,这可挺不错的,写完了发现不好用,问度娘也没弄明白,最后我写了2个demo一个springMVC的,一个Spring整合struts2的,发现SpringSession需要SpringMVC的支持。也就是说我的项目用不了了。

先说说springsession的配置吧:

一、Maven中pom.xml文件中添加(选一种添加上就行):

<span style="white-space:pre">		</span><!--1、redis-整合-->
		<dependency>
		    <groupId>org.springframework.session</groupId>
		    <artifactId>spring-session-data-redis</artifactId>
		    <version>1.0.2.RELEASE</version>
		</dependency>

		<!-- 2、Redis -->
		<dependency>
		    <groupId>org.springframework.data</groupId>
		    <artifactId>spring-data-redis</artifactId>
		    <version>1.4.2.RELEASE</version>
		</dependency>		 
		<dependency>
		    <groupId>redis.clients</groupId>
		    <artifactId>jedis</artifactId>
		    <version>2.5.2</version>
		</dependency>
		<dependency>
		       <groupId>org.springframework.session</groupId>
		       <artifactId>spring-session</artifactId>
		       <version>1.0.2.RELEASE</version>
		</dependency>
		<dependency>
		      <groupId>org.apache.commons</groupId>
		      <artifactId>commons-pool2</artifactId>
		      <version>2.2</version>
		</dependency>
二、在spring配置文件(applicationContext.xml)中添加代码:

<span style="white-space:pre">	</span><!-- 自动扫描 -->
	 <context:annotation-config/>
	<!-- 配置spring-session -->	
	<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"> 
		<!-- 过期时间100分钟 -->
		<property name="maxInactiveIntervalInSeconds" value="6000"></property>
	</bean>  
	<!-- redis连接池 -->
 	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" /> 
		
	<bean  id="jedisConnectionFactory"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"  >  
    	<property  name="hostName"  value="10.4.120.180" />  
    	<property  name="port"  value="6379" />  
    	<property  name="poolConfig"  ref="jedisPoolConfig" />  
	</bean>  
三、在web.xml中添加过滤即可:

<span style="white-space:pre">	</span><!-- Spring Session的Filter -->
	<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>
	<session-config>
		<session-timeout>30</session-timeout>
	</session-config> 
这样就自动将session放入到reids库中了。

补充:

Spring的版本为4.1.6以上

javax.servlet-api需要3.0.1版本以上



Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐