最近給同學寫了個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已經成功的實現了共享,搞定!