代码之家  ›  专栏  ›  技术社区  ›  Artem Petrov

StoreType的替代品是什么。spring boot 2中的HASH\u映射

  •  4
  • Artem Petrov  · 技术社区  · 7 年前

    我正在尝试从spring boot 1.5.9迁移应用程序。发布至2.0.0。CR1。

    在弹簧防尘套2中 org.springframework.boot.autoconfigure.session.StoreType.HASH_MAP 已删除。在我的应用程序中,它被用于应用程序中。yml公司

    spring:
      session:
        store-type: hash_map
    

    我应该如何使用新版本的spring boot保留以前的行为,以及为什么删除了此存储类型?

    2 回复  |  直到 5 年前
        1
  •  2
  •   arcuri82    6 年前

    您可以使用以下选项:

    @EnableSpringHttpSession
    @Configuration
    public class SpringHttpSessionConfig {
      @Bean
      public MapSessionRepository sessionRepository() {
        return new MapSessionRepository(new ConcurrentHashMap<>());
      }
    }
    

    参见等效项 question 关于SpringSession git存储库

        2
  •  1
  •   Vinayak Dornala    6 年前

    下面的配置对我有用。此配置用于测试和更低的环境。对于生产,我们使用 redis公司 而不是 none或hash\u映射 .

    在应用程序本地中添加以下代码。yml文件。

    spring:
      session:
        store-type: none
    
    server:
      servlet:
        max-http-header-size: 20000
        session:
          cookie:
            max-age: 300 # absolute session timeout in seconds
          timeout: 300
    

    创建配置类。

    import java.util.concurrent.ConcurrentHashMap;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.session.MapSessionRepository;
    import org.springframework.session.SessionRepository;
    import org.springframework.session.config.annotation.web.http.EnableSpringHttpSession;
    import org.springframework.session.web.http.HeaderHttpSessionStrategy;
    import org.springframework.session.web.http.HttpSessionStrategy;
    
    @EnableSpringHttpSession
    @Configuration
    @ConditionalOnProperty(prefix = "spring.session", value = "store-type", havingValue = "none")
    public class HttpSessionConfig {
    
      @Value("${server.servlet.session.timeout:300}")
      private Integer maxInactiveIntervalInSeconds;
    
    
      @Bean
      public SessionRepository sessionRepository() {
        SessionRepository sessionRepository = new MapSessionRepository(new ConcurrentHashMap<>());
        ((MapSessionRepository) sessionRepository)
            .setDefaultMaxInactiveInterval(maxInactiveIntervalInSeconds);
        return sessionRepository;
      }
    }