A.13 springboot session
4404 ワード
1.紹介
spirng sessionがサポートする特性クラスタセッション.通常、水平拡張クラスタセッション共有 に使用されるブラウザ上のマルチセッション(1ブラウザ複数セッション) RESTful APIsでsession を提供 websocketでsession を提供は、クッキー に依存することなく、HTTPプロトコルヘッダにセッションidを渡す.
参考資料 https://docs.spring.io/spring-session/docs/1.2.2.RELEASE/reference/html5/ https://docs.spring.io/spring-boot/docs/1.4.7.RELEASE/reference/htmlsingle/#boot-features-session
Spring sessionがサポートするストレージ方式 redis jdbc mongo hazelcast hashmap none
参照:org.springframework.boot.autoconfigure.session.StoreType
2.spring boot原生session
spring bootはtomcatを統合しているため、sessionは自然にtomcatによって管理されます.
spring-boot-starter-webパッケージではspring-boot-starter-tomcatのパッケージに依存しているため、POMにはspring-boot-starter-tomcatの導入は表示されない.
tomcatのセッション管理に関する構成は以下の通りです.
3.spring boot集積spring session
3.1紹介
Spring bootはspringセッションの自動アセンブリも提供しています.
Spring bootがspring sessionに提供するpomは以下のとおりです.
3.2 spirng session data redis
spring bootではspring sessionによってredisにsessionを格納し、エコー共有の目的を達成し、後期サービスのレベル拡張をサポートします.
統合手順:
導入依存
接続redis
义齿
4.よくある質問
4.1他方式のセッション共有
mongodb、jdbcなどの使用は、セッション外付けを永続化して共有する目的であり、spirngセッションdata redisと同様に統合されています.
4.2タイムアウト設定
Spring boot環境ではspring原生のコンテナ管理セッションを使用するもspringセッションを使用してもserverを使用することができる.session.timeout sessionのタイムアウト時間を設定します.
注意: springセッションを導入する場合springを使用することもできる.session.timeoutはタイムアウト構成を行います. spring.session.timeoutの優先度はserverより高い.session.timeout @EnableRedisHttpSession注記を追加するとserver.session.timeout/spring.session.timeoutは有効ではありません.注釈のプロパティでタイムアウト時間を設定する必要があります.
spirng sessionがサポートする特性
参考資料
Spring sessionがサポートするストレージ方式
参照:org.springframework.boot.autoconfigure.session.StoreType
2.spring boot原生session
spring bootはtomcatを統合しているため、sessionは自然にtomcatによって管理されます.
spring-boot-starter-webパッケージではspring-boot-starter-tomcatのパッケージに依存しているため、POMにはspring-boot-starter-tomcatの導入は表示されない.
tomcatのセッション管理に関する構成は以下の通りです.
server.session.cookie.comment= # Comment for the session cookie.
server.session.cookie.domain= # Domain for the session cookie.
server.session.cookie.http-only= # "HttpOnly" flag for the session cookie.
server.session.cookie.max-age= # Maximum age of the session cookie in seconds.
server.session.cookie.name= # Session cookie name.
server.session.cookie.path= # Path of the session cookie.
server.session.cookie.secure= # "Secure" flag for the session cookie.
server.session.persistent=false # Persist session data between restarts.
server.session.store-dir= # Directory used to store session data.
server.session.timeout= # Session timeout in seconds.
server.session.tracking-modes= # Session tracking modes (one or more of the following: "cookie", "url", "ssl").
3.spring boot集積spring session
3.1紹介
Spring bootはspringセッションの自動アセンブリも提供しています.
Spring bootがspring sessionに提供するpomは以下のとおりです.
org.springframework.session
spring-session-data-gemfire
org.springframework.session
spring-session-data-mongo
org.springframework.session
spring-session-jdbc
org.springframework.session
spring-session-data-redis
3.2 spirng session data redis
spring bootではspring sessionによってredisにsessionを格納し、エコー共有の目的を達成し、後期サービスのレベル拡張をサポートします.
統合手順:
導入依存
org.springframework.boot
spring-boot-starter-redis
org.springframework.session
spring-session-data-redis
接続redis
# REDIS (RedisProperties)
# Redis ( 0)
spring.redis.database=0
spring.redis.host=192.168.137.101
spring.redis.port=6379
# Redis ( )
spring.redis.password=
# ( )
spring.redis.pool.max-active=8
# ( )
spring.redis.pool.max-wait=-1
#
spring.redis.pool.max-idle=8
#
spring.redis.pool.min-idle=0
# ( )
spring.redis.timeout=0
义齿
# session , spring.session.timeout
server.session.timeout=3600
#spring.session.timeout=3600
# sping session redis , redis ,session key
#spring.session.redis.namespace=session
# spring session , pom spring-session-data-redis
spring.session.store-type=REDIS
# session :ON_SAVE( response commit )、IMMEDIATE( session.setAttrabute )。 :ON_SAVE
# spring.session.redis.flush-mode=
4.よくある質問
4.1他方式のセッション共有
mongodb、jdbcなどの使用は、セッション外付けを永続化して共有する目的であり、spirngセッションdata redisと同様に統合されています.
4.2タイムアウト設定
Spring boot環境ではspring原生のコンテナ管理セッションを使用するもspringセッションを使用してもserverを使用することができる.session.timeout sessionのタイムアウト時間を設定します.
注意:
@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 3600)