美文网首页Https解决方案
SpringBoot session超时的问题(转)

SpringBoot session超时的问题(转)

作者: 是我拉叔 | 来源:发表于2019-04-18 17:56 被阅读0次

    https://www.cnblogs.com/ergexy/p/9684933.html

    SpringBoot session超时的问题

    最近在做SpringBoot的项目,用到了session,发现放置好session后,过一会就失效了,用下面发语句获取session失效时间,发现是60s

    request.getSession().getMaxInactiveInterval();

    去网上查找,发现大多解决问题的办法是 在启动类中main方法的下面加入以下方法来手动设置session失效时间

    @Bean public EmbeddedServletContainerCustomizer containerCustomizer(){        return new EmbeddedServletContainerCustomizer() {  @Override  public void customize(ConfigurableEmbeddedServletContainer Container) {        container.setSessionTimeout(1800);//单位为S            }        };    }

    但是社会在发展,时代在进步,SpringBoot2.0以后已经不支持这种方式了

    ps:可以在pom文件中查看你的SpringBooot版本。

    org.springframework.boot

    spring-boot-starter-parent

    2.0.4.RELEASE

    SpringBoot2.0以后的版本只需要在application.properties中加入以下配置就好

    server.servlet.session.timeout = PT5H

    这里重点解释一下 PT5H 意思是设置session失效的时间是5小时

    通过查看setTimeouot的方法,这里要求传入Duration的实例

    public void setTimeout(Duration timeout) {

    this.timeout = timeout;

    }

    Duration是在Java8中新增的,主要用来计算日期差值

    Duration是被final声明的,并且是线程安全的

    Duration转换字符串方式,默认为正,负以-开头,紧接着P,以下字母不区分大小写

    D :天 T:天和小时之间的分隔符 H :小时  M:分钟  S:秒 每个单位都必须是数字,且时分秒顺序不能乱

    比如P2dt3m5s  P3d  pt3h

    最后总结一下Duration最实用的一个功能其实是 between 方法,因为有很多时候我们需要计算两个日期之间的天数或者小时数,用这个就可以很方便的进行操作。

    BugHome版权所有丨转载请注明出处:https://minei.me/archives/342.html

    相关文章

      网友评论

        本文标题:SpringBoot session超时的问题(转)

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