spring-session使用教程(一):redis共享session

Spring session简介

说白了就是解决session共享问题,spring-session将web的session存到一个指定的位置,集群的所有web服务器在操作session的时候就去这个位置找。(我比较喜欢用最土的语言解释,不官方但是容易理解)

开源地址:https://github.com/bigbeef
个人博客:http://blog.cppba.com

注意:本文只教你怎么使用spring-session-redis,不会深入探讨为什么这么实现,因为暂时我也没弄清他的源源码,但是照下面的做法你一定能跑起来。

maven在pom.xml中配置

1
2
3
4
5
6
<!--spring-session-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>

创建RedisHttpSessionConfig

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.cppba.config;
import org.springframework.context.annotation.Bean;

import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@EnableRedisHttpSession
public class RedisHttpSessionConfig {

@Bean
public JedisConnectionFactory connectionFactory() {
JedisConnectionFactory connection = new JedisConnectionFactory();
connection.setHostName("127.0.0.1");
connection.setPort(6379);
return connection;
}
}

创建SpringSessionInitializer

1
2
3
4
5
6
package com.cppba.config;

import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;

public class SpringSessionInitializer extends AbstractHttpSessionApplicationInitializer {
}

接下来,把项目跑起来,在浏览器上访问一下,我们再在redis的控制台输入keys *,如果你能看到像下图的结果,恭喜你,配置成功!