引入JAR
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
配置session 启动以及配置超时
import org.springframework.beans.factory.annotation.Value;
import javax.annotation.PostConstruct;
import java.time.Duration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration;
@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig extends RedisHttpSessionConfiguration {
@Value("${server.servlet.session.timeout}")
private String timeout;
@PostConstruct
public void redisSessionConfig() {
//Duration类型时间转成秒
long seconds = Duration.parse(timeout).getSeconds();
this.setMaxInactiveIntervalInSeconds((int) seconds);
}
}
注:
@EnableRedisHttpSession 配置redis-session生效
我配置的会话的timeout采用Duration格式的时间,也可以直接配置秒数字,自己处理就行。
springboot session配置:
spring:
session:
store-type: redis
redis:
host: localhost
port: 6379
timeout: 1000
jedis:
pool:
max-active: 100
max-wait: 10
max-idle: 10
min-idle: 10
database: 0
springboot-server.servlet.session.cookie以及超时时间配置
server:
port: 8080
servlet:
context-path: /projectname
session:
timeout: PT30M
cookie:
http-only: false
path: /
注:server.servlet.session.timeout=PT30M 是springboot2+ 配置内存session管理的超时设置,redis配置这个沿用了此配置,放在哪里都可以,自己取用时候注意下就行。
如果多项目公用session,且项目名不一样的情况,注意配置cookie的path,session的作用范围好像是这个。
