使用springboot+redis实现session共享
最近给同学写了个SpringBoot加Redis实现session共享,想了想还是决定在博客上写一下当时的心得。首先我们需要先建一个springboot项目,pom文件如下:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>这里有一点需要注意的是,我们使用https://start.spring.io创建项目的时候,选择spring-session后我们需要把下面的artifactId由spring-session改为spring-session-data-redis,不然的话关于redis的一些基本jar包不会自动依赖,项目建好之后我们需要开启redis session支持:
import org.springframework.context.annotation.Configuration; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; /** * Created by Administrator on 2017/8/27. */ @Configuration @EnableRedisHttpSession public class SessionConfig { }application.propreties文件的配置如下:
spring.redis.host=localhost spring.redis.port=6379 server.port=8080大家可以看到我使用的是本机的redis,在配置这个的时候我们指定地址跟端口就ok了,到这里基本的配置都已经完成了,我们来写个基本的demo:
@RestController public class IndexController { @RequestMapping("/route/1") public Map<String,Object> index(HttpServletRequest request,String msg){ Map<String,Object> map = new HashMap<>(); HttpSession session = request.getSession(); session.setAttribute("msg",msg); map.put("msg",session.getAttribute("msg")); return map; } }
@RestController public class IndexController { @RequestMapping("/route/2") public Map<String,Object> index(HttpServletRequest request){ Map<String,Object> map = new HashMap<>(); HttpSession session = request.getSession(); map.put("msg",session.getAttribute("msg")); return map; } }这里是两个模块的测试controller。
在redis中的session也成功找到了,如下:
从结果看,我们的session已经成功的实现了共享,搞定!