SpringBoot session超时的问题

2021-06-21 05:05

阅读:645

标签:行操作   开头   查找   字符   void   rabl   cti   pat   nta   

最近在做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超时的问题

标签:行操作   开头   查找   字符   void   rabl   cti   pat   nta   

原文地址:https://www.cnblogs.com/ergexy/p/9684933.html


评论


亲,登录后才可以留言!