美文网首页
2018-12-05 springboot 基于 spring-

2018-12-05 springboot 基于 spring-

作者: FredWorks | 来源:发表于2018-12-05 15:49 被阅读0次
    1. 安装redis
      首先,从docker仓库拉取redis的最新版本镜像:
    $ docker pull redis
    

    然后,在宿主机器的 /appdata/redis 创建 redis的数据目录,将在启动redis容器时使用。

    接下来,启动redis容器:

    $ docker run -d --name redis -p 6379:6379 -v /appdata/redis:/data redis
    

    根据docker仓库上的镜像说明,redis在容器内,使用 /data 作为数据目录,使用端口 6379,且不使用持久化数据。

    好了,现在redis就安装完毕了。

    1. 在项目中配置使用 spring-sesion和 redis作为会话共享方案。
      首先,配置pom以来,让springboot支持redis,让spring-session支持redis:
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.session</groupId>
                <artifactId>spring-session-data-redis</artifactId>
            </dependency>
    

    上述两个依赖,缺一不可。

    然后,配置springboot的application.properties,启用redis

    #redis
    spring.session.store-type=redis
    spring.redis.host=localhost
    spring.redis.port=6379
    server.session.timeout=36000
    

    其中第一句配置非常重要,否则启动时spring-session会报找不到链接工厂的错误。

    接下来,在代码中启用spring-session的javaconfig配置:
    在javaconfig的配置类上,增加

    @EnableRedisHttpSession
    public class XxConfig {
    ...
    

    好了,现在项目就已经支持redis的会话共享了。

    1. 增加web接口,用于显示当前会话ID,验证不同项目中是否已经共享会话了
      在每个项目中增加如下web接口代码:
    @Controller
    @RequestMapping("/xxx/session")
    public class SessionController {
    
        @ResponseBody
        @RequestMapping("/currentSession.do")
        public String currentSession(
                HttpServletRequest request) {
            SingleResult<String> result = new SingleResult<>();
            
            String sessionId = request.getSession().getId();
            result.setData(sessionId);
            result.setSuccess(true);
            
            return result.toString();
        }
    }
    

    根据个人项目特定,可以修改为rest风格接口,也可以修改为自己的url前缀,并增加相关权限配置等等。由于和本文章无关,就不在这个描述了。

    现在,我们可以通过浏览器中输入url来显示当前会话ID了:

    http://xxx:8080/xxx/session/currentSession.do
    

    可以看到,完成了上述会话共享改造的项目,显示出来的会话ID,都是相同的了。

    相关文章

      网友评论

          本文标题:2018-12-05 springboot 基于 spring-

          本文链接:https://www.haomeiwen.com/subject/pyhwcqtx.html