浏览代码

Session功能优化@20210309:在application.yml中新增define.session.timeout属性,实现Session超时设置。

huangbo 4 年之前
父节点
当前提交
d920aa2224

+ 24 - 4
ipu-rest-scaffold/src/main/java/com/ai/ipu/server/config/RedisSessionConfig.java

1
package com.ai.ipu.server.config;
1
package com.ai.ipu.server.config;
2

2

3
import org.springframework.beans.factory.annotation.Qualifier;
4
import org.springframework.beans.factory.annotation.Value;
5
import org.springframework.context.ApplicationEventPublisher;
6
import org.springframework.context.annotation.Bean;
3
import org.springframework.context.annotation.Configuration;
7
import org.springframework.context.annotation.Configuration;
4
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
8
import org.springframework.context.annotation.Primary;
9
import org.springframework.data.redis.core.RedisOperations;
10
import org.springframework.session.data.redis.RedisOperationsSessionRepository;
5

11

6
/**
12
/**
7
 * 添加@EnableRedisHttpSession来开启spring session支持
13
 * 添加@EnableRedisHttpSession来开启spring session支持
8
 */
14
 */
15
/*设置超时方案二:设置maxInactiveIntervalInSeconds*/
9
@Configuration
16
@Configuration
10
// maxInactiveIntervalInSeconds 默认是1800秒过期
11
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
17
/*@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)*/
12
public class RedisSessionConfig {
18
public class RedisSessionConfig {
13

19
    
20
    /*设置超时方案一:在application.yml中设置define.session.timeout*/
21
    @Value("${define.session.timeout}")
22
    private int sessionTimeout = 1800;
23
 
24
    @Primary
25
    @Bean
26
    public RedisOperationsSessionRepository sessionRepository(
27
        @Qualifier("sessionRedisTemplate") 
28
        RedisOperations<Object, Object> sessionRedisTemplate, ApplicationEventPublisher applicationEventPublisher) {
29
        RedisOperationsSessionRepository sessionRepository = new RedisOperationsSessionRepository(sessionRedisTemplate);
30
        sessionRepository.setApplicationEventPublisher(applicationEventPublisher);
31
        sessionRepository.setDefaultMaxInactiveInterval(sessionTimeout);
32
        return sessionRepository;
33
    }
14
}
34
}

+ 4 - 1
ipu-rest-scaffold/src/main/resources/dev/application.yml

27
web:
27
web:
28
  root: webapp/
28
  root: webapp/
29
logging:
29
logging:
30
  file: target/logs/${project.artifactId}.log
30
  file: target/logs/${project.artifactId}.log
31
define:
32
  session:
33
    timeout: 1800