第 2 章 使用 Spring Session 外部调整会话
将 Spring 应用程序的会话数据存储在 Data Grid 缓存中,并独立于容器。
2.1. 使用 Spring Session 外部调整会话
使用 Spring Session API 将会话数据外部化到 Data Grid。
流程
将依赖项添加到
pom.xml
中。-
嵌入式缓存:
infinispan-spring6-embedded
远程缓存:
infinispan-spring6-remote
以下示例是远程缓存:
<dependencies> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-core</artifactId> </dependency> <dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-spring6-remote</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-core</artifactId> <version>${version.spring}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${version.spring}</version> </dependency> </dependencies>
-
嵌入式缓存:
指定适当的
FactoryBean
以公开CacheManager
实例。-
嵌入式缓存:
Spring embeddedCacheManagerFactoryBean
-
远程缓存:
SpringRemoteCacheManagerFactoryBean
-
嵌入式缓存:
使用适当的注解启用 Spring Session。
-
嵌入式缓存
:@EnableInfinispanEmbeddedHttpSession
远程缓存
:@EnableInfinispanRemoteHttpSession
这些注解有可选参数:
-
maxInactiveIntervalInSeconds
设置会话过期时间(以秒为单位)。默认值为1800
。 -
cacheName
指定存储会话的缓存名称。默认为sessions
。
-
-
嵌入式缓存
以下示例显示了完整的、基于注解的配置:
@EnableInfinispanEmbeddedHttpSession @Configuration public class Config { @Bean public SpringEmbeddedCacheManagerFactoryBean springCacheManager() { return new SpringEmbeddedCacheManagerFactoryBean(); } //An optional configuration bean responsible for replacing the default //cookie that obtains configuration. //For more information refer to the Spring Session documentation. @Bean public HttpSessionIdResolver httpSessionIdResolver() { return HeaderHttpSessionIdResolver.xAuthToken(); } }