• [spring家族01]之Spring-Session


    Spring-Session 提供API和实现实现类,用于管理用户Session会话(官方)

    关于它的特性,模块就参考官网,我就不照本宣科咯.

    为什么是SpringSession

    随着分布式架构和集群等架构的主流化,就带了session共享问题.Spring-Session它像Spring家族的其他组件一样,它的出现是为了指定标准,说白了就是在企业开发中,我提供框架,接口,流程规范.这里可见Spring的野心之大.

    我们知道解决session共享问题有很多方案,比如常见的

    • redis共享
    • url带参
    • mysql建表保存

    等等,反正道路千千万万,都能解决这个问题.

    PS:那要个篮子的spring-session .我用redis解决就完事了,干嘛要劳什子学习啥spring-session 的 api.我干嘛要学这种鸡肋的技术嘛.

    话糙理不糙,没毛病,的确如此.我也是这么觉得.那么本文到此嗝屁.

    实际上,不是这样,所有的spring组件都可以如下解释:

    • 支持Redis、Database、MogonDB等方案可以避免重复造轮子,少踩一些坑
    • 代码都是spring的风格,可读性大大提高
    • 即使出了问题,百度就能搞懂(嘿嘿...专业百度选手)
    • 遵顼JSR340规范,设计更加合理,维护性大大提高
    • spring-session的优势在于开箱即用,具有较强的设计模式。
    • 且支持多种持久化方式,其中RedisSession较为成熟,与spring-data-redis整合

    好了,官方的话不多说,mmp还是要学啊,文规定题.

    spring-session的核心思想

    将session从web容器中剥离,存储在独立的存储服务器中。

    目前支持多种形式的session存储器:Redis、Database、MogonDB等。session的管理责任委托给spring-session承担。

    当request进入web容器,根据request获取session时,由spring-session负责存存储器中获取session,如果存在则返回,如果不存在则创建并持久化至存储器中。

    用起来

    redis 作为存储器试试水,springboot 项目

    引入jar
    <dependency>
    		<groupId>org.springframework.session</groupId>
    		<artifactId>spring-session-data-redis</artifactId>
    	</dependency>
    
    配置
    # 选择redis作为存储器
    spring.session.store-type=redis 
    # 超时10s
    server.servlet.session.timeout= 10
    # Sessions flush mode.
    spring.session.redis.flush-mode=on_save 
    # Namespace for keys used to store sessions.
    spring.session.redis.namespace=spring:session 
    
    # redis的配置
    spring.redis.host=localhost # Redis server host.
    spring.redis.password= # Login password of the redis server.
    spring.redis.port=6379 # Redis server port.
    
    启动

    就能用起来,这个demo参考

    源码

    这里就不分析了.开箱即用的成熟产品,用起来吧.就不要去琢磨源码了,没啥太大味道.

    如果你非要琢磨,我就给大家几个点,看看参考下:

    • 包spring-session @EnableSpringHttpSession @EnableRedisHttpSession @EnableMongoHttpSession 随便找一个试着看看就明白了.

    还是熟悉的spring代码风格.没太深逻辑.

    再参考下一个大佬的精彩分析

  • 相关阅读:
    Cocos2dx隐藏iOS7状态栏】通过添加Plist Key隐藏iOS7状态栏
    数论
    Large Division(大数取余模板)
    CodeForces
    2019山东第十届acm省赛 c Wandering Robot 即zoj4115
    CF1157A. Reachable Numbers
    E. Mishap in Club (CF 245E)
    ATcoder Big Array
    CF987B
    CF1013B And
  • 原文地址:https://www.cnblogs.com/Profound/p/13100124.html
Copyright © 2020-2023  润新知