Bootstrap

在SpringBoot使用Redis session时如何动态设定session过期时间

最近在做一个新项目的架构时遇到了一个问题:

我们使用redis sentinel来保存session,我们在SpringBoot中集成了spring-session-data-redis来实现分布式session。这里面有@EnableRedisHttpSession注解参数maxInactiveIntervalInSeconds来设定超时时间。但如何动态的通过配置文件来设定这个超时时间?

这里记录一下实现过程:

    @Value("${server.session.timeout}")
    private int sessionTimeout = 1800;

    @Primary
    @Bean
    public RedisOperationsSessionRepository sessionRepository(
        @Qualifier("sessionRedisTemplate") RedisOperations<Object, Object> sessionRedisTemplate,
        ApplicationEventPublisher applicationEventPublisher) {
        RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(sessionRedisTemplate);
        sessionRepository.setApplicationEventPublisher(applicationEventPublisher);
        sessionRepository.setDefaultMaxInactiveInterval(sessionTimeout);
        return sessionRepository;
    }

;