Spring Session的主页 http://projects.spring.io/spring-session/
0、前言
在传统的Web项目中会经常用到session,例如用来保存用户信息。
传统的session有如下缺点:
1、session保存在内存中,占用内存资源
2、session可能会随着Web服务器的关机而丢失
3、集群多个Web服务器不能共享session
而Spring Session是应对这些问题的一套解决方法,它可以将session持久化到一台服务器的磁盘中。
1、准备
Spring Session是支持多种存储类型的,参见 StoreType。
由于Redis的高性能和功能特性,Redis成为Spring Session实现功能的首选。
下面在本机以默认配置启动Redis,命令行如下:
redis-server --service-install
redis-server --service-start
2、开始
为了简单起见,下面以Spring Boot构建项目。
官方样例:https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-session
新建一个Spring Boot项目,添加依赖。以下是Gradle格式的依赖:
'org.springframework.boot:spring-boot-starter-web',
'org.springframework.boot:spring-boot-starter-data-redis',
'org.springframework.session:spring-session-data-redis'
然后在文件application.properties中加入如下配置:
spring.session.store-type=redis
3、完成
编写一个web controller,如下:
import javax.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping
public class HelloController {
@RequestMapping("login")
private String login(HttpSession session) {
session.setAttribute("name", "abc");
return "success";
}
@RequestMapping
private String index(HttpSession session) {
Object name = session.getAttribute("name");
if (name == null) return "session lost";
return "Hi," + name;
}
}
4、测试
启动应用,先访问http://localhost:8080/login,再访问http://localhost:8080,然后重启应用,刷新页面,看看是否成功。