SpringSession简单使用

1、SpringSession简介

在传统的web项目中,用户的session都是由容器管理的。用户认证信息保存在服务器的session中,再由服务器返回一个sessionId给用户浏览器中的cookie中,下次访问容器会根据sessionId判断用户是否存在回话session。这里的缺点是:session存储在容器中,被单台服务器的容器管理。
但是在分布式和集群应用中,此时用户的请求可能被负载到不同的服务器,所以传统的容器管理session的方式是行不通的。SpringSession能够完美的解决此问题。
SpringSession将session从web容器中剥离,存储在独立的存储服务器中。目前支持多种形式的session存储器:Redis、Database、MogonDB等。SpringSession包装了原生的HttpSession,当request进入web容器,根据request获取session时,由SpringSession负责存存储器中获取session,如果存在则返回,如果不存在则创建并持久化至存储器中。

2、Springboot中的简单使用

SpringSession结合redis在Springboot中的使用

2.1 引入依赖

        <!--引入redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <!--排除spring redis自己整合的lettuce-core-->
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--上面排除了lettuce-core后 使用jedis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>

        <!--整合springsession完成session共享问题-->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

2.2 配置

yml配置

spring:
  session:
    store-type: redis
  redis:
    host: 192.168.200.139
    port: 6379
server:
  port: 13000

自定义配置

@Configuration
public class GulimallSessionConfig {
    /**
     * 设置一级域名:多级域名下可使用共享session
     * @return
     */
    @Bean
    public CookieSerializer cookieSerializer() {
        DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer();
        defaultCookieSerializer.setDomainName("gulimall.com");
        defaultCookieSerializer.setCookieName("GULISESSION");
        return defaultCookieSerializer;
    }

    /**
     * 自定义序列化(json)
     * @return
     */
    @Bean
    public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
        return new GenericJackson2JsonRedisSerializer();
    }
}

开启SpringSession

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableRedisHttpSession //开启SpringSession
public class GulimallSearchApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallSearchApplication.class, args);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值