springboot-不同名称项目的 redis session共享

引入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的作用范围好像是这个。

原文地址:https://www.cnblogs.com/feecy/p/12092245.html