springboot使用spring-session完成session共享

这里session同步靠的是redis,即如果一个服务中的session有值就直接把该值拿到redis中去,如果redis中的session中的key存在则覆盖,不存在则创建,这样多个服务就可以共享一个session了,即把session的放到redis中去

所需依赖

 <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-redisartifactId>
            <version>1.4.7.RELEASEversion>
        dependency>
        <dependency>
            <groupId>org.springframework.sessiongroupId>
            <artifactId>spring-session-data-redisartifactId>
        dependency>

开启redisHttpSession功能

在启动类上加上注解

@EnableRedisHttpSession

在配置文件中配置redis的地址

在application.yml中增加redis配置

spring:
  redis:
    host: 192.168.108.3
    port: 6379

测试

在8081的服务上,请求8081/login则在session中保存一个key和value

@GetMapping(value = "/login")
    public String firstResp (HttpServletRequest request){
        request.getSession().setAttribute("loginUser", "张三");
        return "ok";
    }

在8082服务商,请求getsession获取8081服务存储的session的值

  @GetMapping(value = "/getsession")
    public Object firstResp (HttpServletRequest request){
        Object loginUser = request.getSession().getAttribute("loginUser");
        return loginUser == null?"null":loginUser;
    }

你可能感兴趣的:(spring家族)