近来运用spring boot开辟一个体系,nginx做负载平衡分发要求到多个tomcat,此时接见页面会把要求分发到差别的服务器,session是存在服务器端,假如初次接见被分发到A服务器,那末session就会被存到A服务器,再次接见时负载平衡会分发到B服务器那末第一次接见的session信息就会猎取不到之前的session信息,所以须要完成session同享,还好有spring session,运用简朴的设置即可完成session同享,下面引见下:
1. pom.xml中引入jar包
<!-- Spring Boot Redis 依靠 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-core</artifactId> </dependency>
2. 增加RedisSessionConfig设置类
在项目的目次中,建立一个java文件(称号随便)即可,我这里称号是RedisSessionConfig.java
@EnableRedisHttpSession这个注解异常最主要,加了它以后,会运用spring的一个拦截器来完成Session同享的操纵,而设置的这个Bean,则是让Spring依据设置文件中的设置连到Redis。
SpringSession 须要注重的就是redis须要2.8以上版本,然后开启事宜关照,在redis设置文件内里加上
notify-keyspace-events Ex // 翻开此设置,个中Ex示意键事宜关照内里的key逾期事宜,每当有逾期键被删除时,会发送关照
或是运用以下敕令开启开启事宜关照:
redis-cli config set notify-keyspace-events Egx
假如你的Redis不是你本身保护的,比方你是运用阿里云的Redis数据库(我就是这类状况),你不能够变动它的设置,那末能够运用下面的java设置文件即可。
package org.spring.springboot.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.session.data.redis.config.ConfigureRedisAction; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; @Configuration // maxInactiveIntervalInSeconds 默许是1800秒逾期,这里测试修改成60秒 @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) public class RedisSessionConfig { @Bean public static ConfigureRedisAction configureRedisAction() { return ConfigureRedisAction.NO_OP; } }
3. 设置redis衔接
Spring Boot会自动建立一个RedisConnectionFactory将Spring Session衔接到端口6379(默许端口)上localhost上的Redis服务器的衔接。在生产环境中,您须要确保更新设置以指向Redis服务器
src/main/resources/application.properties
# Redis 设置 # Redis数据库索引(默许为0) spring.redis.database=0 # Redis服务器地点 spring.redis.host=192.168.0.1 # Redis服务器衔接端口 spring.redis.port=6379 # Redis服务器衔接暗码(默许为空) spring.redis.password=1234
以上就是Spring boot集成spring session完成session同享的要领引见的细致内容,更多请关注ki4网别的相干文章!