Apache Geode/Pivotal GemFire 的 Spring Session 2.0.5.RELEASE 和 2.1.0.M1 已发布!

工程 | John Blum | 2018年8月30日 | ...

我代表团队和社区很高兴地宣布,用于 Apache Geode 和 Pivotal GemFire 的 Spring Session (SSDG) 2.0.5.RELEASE (Apple) 和 2.1.0.M1 (Bean) 已发布。

SSDG 2.0.5.RELEASE 基于 Spring Session 2.0.5.RELEASE、Spring Data Kay-SR9 和 Spring Framework 5.0.8.RELEASE 构建,可在 Maven Central 获取。

SSDG 2.1.0.M1 基于 Spring Session 2.1.0.M2、Spring Data Lovelace-RC2 和 Spring Framework 5.1.0.RC2 构建,可从 Spring libs-milestone 获取。

这两个版本都带来了一种新的方式来配置 Spring Session,在使用 Apache GeodePivotal GemFire,甚至 Pivotal Cloud Cache (PCC) 管理 Spring Boot Web 应用程序的 (HTTP) Session 状态时。

目前,要使用 Apache Geode 或 Pivotal GemFire 作为提供者来启用 Spring Session 的 (HTTP) Session 状态管理,您需要在 Spring Boot 应用程序的类路径中包含 org.springframework.session:spring-session-data-geodeorg.springframework.session:spring-session-data-gemfire,然后在一个应用程序的 @Configuration 类上声明 @EnableGemFireHttpSession 注解,如下所示

@SpringBootApplication
@EnableGemFireHttpSession(maxInactiveIntervalSeconds=600)
public class MyWebApplication {

  public static void main(String[] args) {
    SpringApplication.run(MyWebApplication.class, args);
  }
...
}

@EnableGemFireHttpSession 注解包含几个属性,用于修改您的 Session 管理策略(例如过期;如上所示)以及 Apache Geode 或 Pivotal GemFire 用来有效管理 Session 状态的数据管理策略和索引。

然而,所有这些属性都必须硬编码。如果您想在部署期间根据环境更改配置怎么办?也许您想使用 Spring profiles 来改变配置。

现在,当使用 Apache Geode 或 Pivotal GemFire 时,您可以通过两种不同的方式动态配置 Spring Session。

使用属性进行配置

Apache Geode/Pivotal GemFire 的 Spring Session 现在允许您使用众所周知的已发布的属性来配置 Session 管理和 Apache Geode 或 Pivotal GemFire。

@EnableGemFireHttpSession 注解属性本身记录了所有众所周知的已发布的属性。

例如,要更改 Session 过期超时时间,您可以在 Spring Boot 的 application.properties 文件中指定以下属性,如下所示

#application.properties

spring.session.data.gemfire.session.expiration.max-inactive-interval-seconds=600
...

关于使用属性配置 SSDG 的更多详细信息,请参阅文档

使用 Configurer 进行配置

类似于 Spring Web MVC 的 WebMvcConfigurer 回调接口,Apache Geode/Pivotal GemFire 的 Spring Session 提供了 SpringSessionGemFireConfigurer 回调接口,用于调整 Spring Session 配置的各个方面。

例如,要设置 Session 过期超时,只需声明以下内容

@Configuration
class SpringSessionGemFireConfiguration {

  @Bean
  SpringSessionGemFireConfigurer sessionExpirationConfigurer() {

    return new SpringSessionGemFireConfigurer(
        @Value("${spring.session.timeout:600}") int sessionTimeout) {

      @Override
      public int getMaxInactiveIntervalInSeconds() {
        return sessionTimeout;
      }
    };
  }
  ...
}

如上所示,Configurer 的配置甚至可以使用 Spring 的 @Value 注解从其他属性派生。您可以将不同的 Configurer bean 定义与不同的 Spring profiles 等等结合使用。

关于使用 Configurer 配置 SSDG 的更多详细信息,请参阅文档

反馈

任何反馈和/或贡献都非常感谢和欢迎。您可以通过以下常用渠道联系我们:问题 | PR | StackOverflow

谢谢!

获取 Spring 时事通讯

通过 Spring 时事通讯保持联系

订阅

保持领先

VMware 提供培训和认证,助您快速前进。

了解更多

获取支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,仅需一个简单的订阅。

了解更多

即将到来的活动

查看 Spring 社区中的所有即将到来的活动。

查看全部