首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jdbcSessionRepository.setDefaultMaxInactiveInterval和server.servlet.session.timeout之间的优先级是什么

JdbcSessionRepository.setDefaultMaxInactiveIntervalserver.servlet.session.timeout 是两个用于设置会话超时的配置项,但它们的作用范围和应用场景略有不同。

基础概念

  1. JdbcSessionRepository.setDefaultMaxInactiveInterval:
    • 这是Spring Session JDBC模块中的一个方法,用于设置会话的最大不活动间隔时间。
    • 它定义了会话在数据库中保持活动状态的最长时间。
  • server.servlet.session.timeout:
    • 这是Spring Boot中的一个配置项,用于设置Servlet容器的会话超时时间。
    • 它定义了会话在内存中的最大不活动间隔时间。

优先级

当同时配置了这两个值时,JdbcSessionRepository.setDefaultMaxInactiveInterval 的优先级通常高于 server.servlet.session.timeout。这意味着即使 server.servlet.session.timeout 设置了一个较短的时间,只要 JdbcSessionRepository.setDefaultMaxInactiveInterval 设置的时间更长,会话仍然会在数据库中保持活动状态。

应用场景

  • JdbcSessionRepository.setDefaultMaxInactiveInterval:
    • 适用于需要将会话持久化到数据库的场景,确保即使应用重启,会话信息也不会丢失。
    • 适用于分布式系统,确保会话在多个实例之间共享。
  • server.servlet.session.timeout:
    • 适用于常规的Web应用,控制会话在内存中的生命周期。
    • 适用于不需要持久化会话的场景。

示例代码

代码语言:txt
复制
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.jdbc.JdbcOperationsSessionRepository;
import org.springframework.session.jdbc.config.annotation.web.http.EnableJdbcHttpSession;

@Configuration
@EnableJdbcHttpSession
public class SessionConfig {

    @Bean
    public JdbcOperationsSessionRepository jdbcSessionRepository() {
        JdbcOperationsSessionRepository sessionRepository = new JdbcOperationsSessionRepository(dataSource());
        sessionRepository.setDefaultMaxInactiveInterval(1800); // 30分钟
        return sessionRepository;
    }

    @Bean
    public DataSource dataSource() {
        // 配置数据源
        return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.H2)
            .addScript("org/springframework/session/jdbc/schema-h2.sql")
            .build();
    }
}

application.propertiesapplication.yml 中配置 server.servlet.session.timeout:

代码语言:txt
复制
server.servlet.session.timeout=1800 # 30分钟

参考链接

通过以上配置,可以确保会话在数据库中的超时时间优先于内存中的超时时间。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

共39个视频
Servlet规范教程入门到精通-动力节点
动力节点Java培训
本课程为servlet开发由浅入深的全套体系课程,是所有JAVA WEB开发的基础,通过servlet的学习,我们可以观察到最初级的浏览器和服务器之间交互的全过程。 课程中会针对servlet开发的所有相关知识点,如对于get和post的处理,响应方式,转发和重定向,上下文等相关技术做最深入的讲解。 课程最后会搭配一个登陆操作及显示学生信息列表的综合案例,对servlet开发做一个最完整的总结。
共32个视频
动力节点-Maven基础篇之Maven实战入门
动力节点Java培训
Maven这个单词的本意是:专家,内行,读音是['meɪv(ə)n]或['mevn]。Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一款在大型项目开发过程中不可或缺的重要工具,Maven通过一小段描述信息可以整合多个项目之间的引用关系,提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
共49个视频
动力节点-MyBatis框架入门到实战教程
动力节点Java培训
Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建和依赖管理。Maven 是目前最流行的自动化构建工具,对于生产环境下多框架、多模块整合开发有重要作用,Maven 是一款在大型项目开发过程中不可或缺的重要工具,Maven通过一小段描述信息可以整合多个项目之间的引用关系,提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
领券