最近在做一个新项目的架构时遇到了一个问题:
我们使用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;
}