이 글은 세션 공유를 달성하기 위해 스프링 부트와 스프링 세션을 통합하는 방법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
최근에 스프링 부트를 사용하여 시스템을 개발했습니다. nginx는 로드 밸런싱을 수행하고 여러 Tomcat에 요청을 분산합니다. 이때 액세스 페이지는 처음 방문하는 경우 세션이 다른 서버에 분산됩니다. 서버 A에 배포된 후 세션은 서버 A에 저장되고, 다시 접속하면 서버 B에 로드 밸런싱이 분산됩니다. 그러면 처음 접속한 세션 정보는 이전 세션 정보를 얻을 수 없게 됩니다. 다행히도 스프링 세션이 있는데, 다음과 같이 간단한 구성으로 세션 공유를 수행할 수 있습니다.
SpringSession Redis에는 버전 2.8 이상이 필요하며 이벤트 알림을 활성화하려면 Redis 구성 파일에
<!-- 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>
를 추가하거나 다음 명령을 사용하여 이벤트 알림을 활성화하십시오.
notify-keyspace-events Ex // 打开此配置,其中Ex表示键事件通知里面的key过期事件,每当有过期键被删除时,会发送通知
Redis가 유지 관리되지 않는 경우 예를 들어 Alibaba Cloud의 Redis 데이터베이스를 사용하고 있고(제 경우) 해당 구성을 변경할 수 없는 경우 다음 Java 구성 파일을 사용할 수 있습니다.
redis-cli config set notify-keyspace-events Egx
3. Redis 연결 구성
Spring Boot는 자동으로 RedisConnectionFactory를 생성하여 포트 6379(기본 포트)의 localhost에 있는 Redis 서버에 Spring 세션을 연결합니다. 프로덕션 환경에서는 Redis 서버
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; } }
위 내용은 세션 공유를 실현하기 위해 Spring 세션과 Spring Boot를 통합하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!