57 lines
2.2 KiB
Plaintext
57 lines
2.2 KiB
Plaintext
[[web.spring-session]]
|
|
== Spring Session
|
|
Spring Boot provides {spring-session}[Spring Session] auto-configuration for a wide range of data stores.
|
|
When building a servlet web application, the following stores can be auto-configured:
|
|
|
|
* Redis
|
|
* JDBC
|
|
* Hazelcast
|
|
* MongoDB
|
|
|
|
Additionally, {spring-boot-for-apache-geode}[Spring Boot for Apache Geode] provides {spring-boot-for-apache-geode-docs}#geode-session[auto-configuration for using Apache Geode as a session store].
|
|
|
|
The servlet auto-configuration replaces the need to use `@Enable*HttpSession`.
|
|
|
|
If a single Spring Session module is present on the classpath, Spring Boot uses that store implementation automatically.
|
|
If you have more than one implementation, Spring Boot uses the following order for choosing a specific implementation:
|
|
|
|
. Redis
|
|
. JDBC
|
|
. Hazelcast
|
|
. MongoDB
|
|
. If none of Redis, JDBC, Hazelcast and MongoDB are available, we do not configure a `SessionRepository`.
|
|
|
|
|
|
When building a reactive web application, the following stores can be auto-configured:
|
|
|
|
* Redis
|
|
* MongoDB
|
|
|
|
The reactive auto-configuration replaces the need to use `@Enable*WebSession`.
|
|
|
|
Similar to the servlet configuration, if you have more than one implementation, Spring Boot uses the following order for choosing a specific implementation:
|
|
|
|
. Redis
|
|
. MongoDB
|
|
. If neither Redis nor MongoDB are available, we do not configure a `ReactiveSessionRepository`.
|
|
|
|
|
|
Each store has specific additional settings.
|
|
For instance, it is possible to customize the name of the table for the JDBC store, as shown in the following example:
|
|
|
|
[source,yaml,indent=0,subs="verbatim",configprops,configblocks]
|
|
----
|
|
spring:
|
|
session:
|
|
jdbc:
|
|
table-name: "SESSIONS"
|
|
----
|
|
|
|
For setting the timeout of the session you can use the configprop:spring.session.timeout[] property.
|
|
If that property is not set with a servlet web application, the auto-configuration falls back to the value of configprop:server.servlet.session.timeout[].
|
|
|
|
|
|
You can take control over Spring Session's configuration using `@Enable*HttpSession` (servlet) or `@Enable*WebSession` (reactive).
|
|
This will cause the auto-configuration to back off.
|
|
Spring Session can then be configured using the annotation's attributes rather than the previously described configuration properties.
|