>  기사  >  Java  >  세션 공유를 실현하기 위해 Spring 세션과 Spring Boot를 통합하는 방법 소개

세션 공유를 실현하기 위해 Spring 세션과 Spring Boot를 통합하는 방법 소개

不言
不言앞으로
2019-02-19 15:56:422131검색

이 글은 세션 공유를 달성하기 위해 스프링 부트와 스프링 세션을 통합하는 방법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

최근에 스프링 부트를 사용하여 시스템을 개발했습니다. nginx는 로드 밸런싱을 수행하고 여러 Tomcat에 요청을 분산합니다. 이때 액세스 페이지는 처음 방문하는 경우 세션이 다른 서버에 분산됩니다. 서버 A에 배포된 후 세션은 서버 A에 저장되고, 다시 접속하면 서버 B에 로드 밸런싱이 분산됩니다. 그러면 처음 접속한 세션 정보는 이전 세션 정보를 얻을 수 없게 됩니다. 다행히도 스프링 세션이 있는데, 다음과 같이 간단한 구성으로 세션 공유를 수행할 수 있습니다.

1. pom에 jar 패키지를 도입합니다. 하지만 여기서 제 이름은 RedisSessionConfig.java

@입니다. EnableRedisHttpSession. 이 주석을 추가한 후에는 Spring의 인터셉터가 세션 공유 작업을 구현하는 데 사용되며 구성된 Bean은 구성에 따라 Spring이 Redis에 연결되도록 합니다.

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 서버

src/main/resources/application.properties

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제