最新の安定バージョンについては、Spring Session 3.4.1 を使用してください! |
Spring Session
Rob Winch; Vedran Pavi ć ; Jay Bryant; Eleftheria Stein-Kousathana
Spring Session は、ユーザーのセッション情報を管理するための API と実装を提供します。
Spring Session は、ユーザーのセッション情報を管理するための API と実装を提供すると同時に、アプリケーションコンテナー固有のソリューションに縛られることなくクラスター化されたセッションをサポートすることを簡単にします。また、以下との透過的な統合も提供します。
HttpSession : アプリケーションコンテナーに依存しない方法で
HttpSession
を置き換えることができ、RESTful API と連携するためにヘッダーでセッション ID を提供するためのサポートがあります。WebSocket : WebSocket メッセージを受信したときに
HttpSession
を存続させる機能を提供しますWebSession : Spring WebFlux の
WebSession
を、アプリケーションコンテナーに依存しない方法で置き換えることができます。
Spring Session が解決する問題を理解する
ユーザーが Web アプリケーションと対話すると、サーバーはセッションを作成してユーザーのアクティビティを追跡します。このセッションには、ユーザー設定、ログインステータス、ショッピングカートの内容などの情報が保存される場合があります。ただし、セッションは通常サーバーのメモリに保存されるため、分散環境では問題が発生する可能性があります。
Spring Session が解決する問題をより深く理解するために、まず次の図を視覚化してみましょう。
上の図では、各 Spring アプリケーションは、自分自身だけがアクセスできる場所 (通常はサーバーのメモリ内) にセッションを保存していますが、分散環境ではこれが問題になる可能性があります。Spring アプリ #2 がセッション #3 のリクエストを受信した状況を想像してください。セッションデータは Spring アプリ #1 のメモリに保存されているため、アプリケーションはセッションデータを読み取ることができません。この問題を解決するには、以下の図に示すように、ある種の共有セッションストレージを実装する必要があります。
上記の設定により、セッションストレージにアクセスできるすべてのアプリケーションでセッションが利用できるようになります。
Spring Session は、アプリケーションとセッション管理の間に抽象化レイヤーを提供します。これにより、セッションデータをリレーショナルデータベース、NoSQL データベースなどのさまざまな永続ストアに保存できるようになります。
Spring Session を使用すると、使用される永続ストアに関係なく、同じ API を使用してセッションを管理できます。これにより、アプリケーションコードを変更せずにストア間の切り替えが簡単になります。Spring Session は、セッションの有効期限や、異なる Web アプリケーション間のクロスコンテキスト通信などの機能も提供します。
全体として、Spring Session は Web アプリケーションでのユーザーセッションの管理を簡素化し、アプリケーションのコア機能の構築に集中しやすくします。
Spring Session の一般的な使用例をいくつか示します。
分散型 Web アプリケーション: Web アプリケーションが複数のサーバーに分散されている場合、ユーザーセッションの管理は困難になる可能性があります。Spring Session は、セッションデータを共有データベースまたは Redis に保存することで役立ち、すべてのサーバーがセッションデータにアクセスして更新できるようになります。
セッションのスケーラビリティ: 多数の同時ユーザーがいる大規模な Web アプリケーションでは、セッションをサーバー上のメモリに保存すると、スケーラビリティの問題が発生する可能性があります。Spring Session を使用すると、セッションデータを永続ストアに保存できるため、スケーラビリティが向上し、メモリ不足エラーのリスクが軽減されます。
セッションのバックアップとリカバリ: セッションデータを永続ストアに保存すると、サーバーの障害やダウンタイムが発生した場合にセッションデータをバックアップおよびリカバリするメカニズムも提供されます。
Spring Session コミュニティ
あなたを私たちのコミュニティの一員と見なしてうれしいです。次のセクションでは、Spring Session コミュニティと対話する方法についてさらに説明します。
サポート
spring-session
タグを使用したスタックオーバーフロー (英語) で質問することで助けを得ることができます。同様に、StackOverflow に関する質問に答えて他の人を手助けすることをお勧めします。
ソースコード
ソースコードは GitHub の github.com/spring-projects/spring-session/ (英語) にあります
課題追跡
github.com/spring-projects/spring-session/issues (英語) で GitHub の課題を追跡します
コントリビュートする
プルリクエスト (英語) に感謝します。
ライセンス
Spring Session は、Apache 2.0 ライセンス (英語) でリリースされたオープンソースソフトウェアです。
最小要件
Spring Session の最小要件は次のとおりです。
Java 17+.
サーブレットコンテナー(必須ではありません)で実行する場合、Servlet 3.1+.
他の Spring ライブラリ(必須ではありません)を使用する場合、最低限必要なバージョンは Spring 6.0.x です。
@EnableRedisHttpSession
には Redis 2.8+ が必要です。これはセッションの有効期限をサポートするために必要です@EnableHazelcastHttpSession
には Hazelcast 3.6+ が必要です。これはFindByIndexNameSessionRepository
をサポートするために必要です
基本的に、Spring Session は spring-jcl にのみ依存する必要があります。他の Spring 依存関係なしで Spring Session を使用する例については、hazelcast サンプルアプリケーションを参照してください。 |