SpringSession

Spring Session 是 Spring 的项目之一。Spring Session 提供了一套创建和管理 Servlet

HttpSession 的方案,默认采用外置的 Redis 来存储 Session 数据,以此来解决 Session 共享的

问题。(springsession储存session数据的方式有很多,我们常见使用redis)

实现步骤:

        1.导包

<dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

        2.配置

spring:
  session:
    store-type: redis  # springsession使用redis类型

        3.开启 redis作为session的储存

@EnableRedisHttpSession  //开启整合redis作为session的储存

在经过以上的操作之后我们在想session储存数据,就会储存到redis中,但是需要注意的是,默认是使用jdk序列化的方式储存,一般情况为了房方便查看储存的数据我们可以配置储存格式为json。

配置redis储存session的序列化方式为json:


@Configuration
public class SessionConfig {


    /**
     * 配置redis的序列化方式  我们使用json的方式 之前默认使用二进制序列化
     *
     * 注入bean对象的名字必须是springSessionDefaultRedisSerializer
     * @return
     */
    @Bean
    public RedisSerializer<Object> springSessionDefaultRedisSerializer(){
        return new GenericJackson2JsonRedisSerializer();
    }
}

在经过我们上面操作之后,储存session的数据就你能储存到redis中并且是json的格式,但是如果我们在微服务情况下其他服务还是不能获取到session数据,因为我们获取session是根据cookie的jsessionid获取的,在之前的session存储中默认cookie的作用域为当前域名,所以其他服务(其他域名)还是不能获取到session的值,我们需要在储存session的时候,修改cookie的作用域来保证其他服务能访问到session(一般修改为所有的服务为一个公共的域值),修改方式如下:

@Configuration
public class SessionConfig {

    /**
     * 配置cookie的作用域名
     * @return
     */
    @Bean
    public CookieSerializer cookieSerializer(){
        DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer();

        //设置规则 设置作用域
        defaultCookieSerializer.setDomainName("xxx.com");

        return defaultCookieSerializer;
    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值