SpringセッションとSpring Bootを統合してセッション共有を実現する方法の紹介

不言
リリース: 2019-02-19 15:56:42
転載
2200 人が閲覧しました

この記事では、Spring セッションと Spring Boot を統合してセッション共有を実現する方法を紹介します。必要な方は参考にしていただければ幸いです。

私は最近 Spring Boot を使用してシステムを開発しました。nginx は負荷分散を行い、リクエストを複数の Tomcat に分散します。このとき、アクセス ページはサーバー側にリクエストを分散します。初回アクセスをAサーバーに分散した場合、セッションはAサーバーに保存され、再度アクセスする際には負荷分散によりBサーバーに分散されます。そうすると、初回アクセス時のセッション情報は取得できなくなります。幸いなことに、簡単な構成を使用してセッション共有を実現できる Spring セッションがあります。

1. jar パッケージを pom.xml

<!-- 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 のインターセプトが使用され、構成ファイルの構成に従って Spring が Redis に接続できるようになります。

SpringSession redis にはバージョン 2.8 以降が必要であることに注意してください。その後、イベント通知を有効にします。redis 構成ファイルに

notify-keyspace-events Ex  // 打开此配置,其中Ex表示键事件通知里面的key过期事件,每当有过期键被删除时,会发送通知
ログイン後にコピー

を追加するか、次のコマンドを使用してイベント通知を有効にします。 #

redis-cli config set notify-keyspace-events Egx
ログイン後にコピー

Redis が自分で保守されていない場合、たとえば、Alibaba Cloud の 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 は、ポート 6379 (デフォルト ポート) 上のローカルホスト上の Redis サーバーに Spring セッションを接続するための RedisConnectionFactory を自動的に作成します。運用環境では、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セッションとSpring Bootを統合してセッション共有を実現する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート