首页 > 编程语言 > 详细

SpringBoot session超时的问题

时间:2018-09-21 10:25:03      阅读:267      评论:0      收藏:0      [点我收藏+]

最近在做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版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

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.cnblogs.com/ergexy/p/9684933.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!