Spring Session

Spring Boot は、さまざまなデータストアに Spring Session 自動構成を提供します。サーブレット Web アプリケーションを構築する場合、次のストアを自動構成できます。

  • Redis

  • JDBC

  • Hazelcast

  • MongoDB

サーブレットの自動構成により、@Enable*HttpSession を使用する必要がなくなります。

クラスパスに単一の Spring Session モジュールが存在する場合、Spring Boot はそのストア実装を自動的に使用します。複数の実装がある場合、Spring Boot は特定の実装を選択するために次の順序を使用します。

  1. Redis

  2. JDBC

  3. Hazelcast

  4. MongoDB

  5. Redis、JDBC、Hazelcast、MongoDB のいずれも使用できない場合、SessionRepository は構成されません。

リアクティブ Web アプリケーションを構築する場合、次のストアを自動構成できます。

  • Redis

  • MongoDB

リアクティブ自動構成は、@Enable*WebSession を使用する必要性を置き換えます。

サーブレット構成と同様に、複数の実装がある場合、Spring Boot は特定の実装を選択するために次の順序を使用します。

  1. Redis

  2. MongoDB

  3. Redis も MongoDB も利用できない場合、ReactiveSessionRepository は構成されません。

各ストアには特定の追加設定があります。たとえば、次の例に示すように、JDBC ストアのテーブルの名前をカスタマイズできます。

  • プロパティ

  • YAML

spring.session.jdbc.table-name=SESSIONS
spring:
  session:
    jdbc:
      table-name: "SESSIONS"

セッションのタイムアウトを設定するには、spring.session.timeout プロパティを使用できます。そのプロパティがサーブレット Web アプリケーションで設定されていない場合、自動構成は server.servlet.session.timeout の値にフォールバックします。

@Enable*HttpSession (サーブレット)または @Enable*WebSession (リアクティブ)を使用して、Spring Session の構成を制御できます。これにより、自動構成がバックオフします。Spring Session は、前述の構成プロパティではなく、アノテーションの属性を使用して構成できます。