Spring Session 简单入门

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,然后重启应用,刷新页面,看看是否成功。

你可能感兴趣的:(玩玩)