Hear from the Spring team this January at SpringOne. >
close

Spring Session

2021.2.0

Spring Session provides an API and implementations for managing a user’s session information.

Features

Spring Session makes it trivial to support clustered sessions without being tied to an application container specific solution. It also provides transparent integration with:

  • HttpSession - allows replacing the HttpSession in an application container (i.e. Tomcat) neutral way, with support for providing session IDs in headers to work with RESTful APIs

  • WebSocket - provides the ability to keep the HttpSession alive when receiving WebSocket messages

  • WebSession - allows replacing the Spring WebFlux’s WebSession in an application container neutral way

Modules

Spring Session consists of the following modules:

  • Spring Session Core - provides core Spring Session functionalities and APIs

  • Spring Session Data Redis - provides SessionRepository and ReactiveSessionRepository implementation backed by Redis and configuration support

  • Spring Session JDBC - provides SessionRepository implementation backed by a relational database and configuration support

  • Spring Session Hazelcast - provides SessionRepository implementation backed by Hazelcast and configuration support

Adding Spring Session to your build

This project uses a Maven BOM (Bill of Materials) and a release train to coordinate versions, e.g. 2121.1.1, 2020.0.3, etc.

Using the BOM with Maven

With Maven, you need to import the BOM first:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.session</groupId>
      <artifactId>spring-session-bom</artifactId>
      <version>2021.1.1</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
  • This example is using 2021.1.1, but you plug in the release train version you need.

  • Notice the use of the <dependencyManagement> section and the import scope.

Next, add your dependencies to the project without a <version>:

<dependencies>
  <dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
  </dependency>
</dependencies>

Using the BOM with Gradle

Since Gradle has no first-class support for Maven BOMs, you can use Spring’s Dependency management plugin.

Apply the plugin from Gradle Plugin Portal (update the version if needed):

plugins {
  id 'io.spring.dependency-management' version '1.0.11.RELEASE'
}

Then use it to import the BOM:

dependencyManagement {
  imports {
    mavenBom 'org.springframework.session:spring-session-bom:2021.1.1'
  }
}

Finally, add a dependency to the project without a version:

dependencies {
  compile 'org.springframework.session:spring-session-data-redis'
}

Feedback

You can use the GitHub issue tracker to report bugs or enhancements in Spring Session.

If you have a general usage question, please ask on Stack Overflow using the spring-session tag.

Spring Initializr

Quickstart Your Project

Bootstrap your application with Spring Initializr.

Documentation

Each Spring project has its own; it explains in great details how you can use project features and what you can achieve with them.
2021.2.0 CURRENT GA Reference Doc. API Doc.
2021.1.3 GA Reference Doc. API Doc.
2021.0.6 GA Reference Doc. API Doc.
2020.0.7 GA Reference Doc. API Doc.
3.0.0-RC2 PRE Reference Doc. API Doc.
Branch Initial Release End of Support End Commercial Support *
3.0.x
2022-11-22 2023-11-22 2025-03-22
2021.2.x
2022-05-18 2023-05-18 2024-09-18
2021.1.x
2021-11-17 2022-11-17 2024-03-17
2021.0.x
2021-05-19 2022-05-19 2023-09-19
2020.0.x
2020-10-29 2021-10-29 2023-02-28

OSS support

Free security updates and bugfixes with support from the Spring community. See VMware Tanzu OSS support policy.

Commercial support

Business support from Spring experts during the OSS timeline, plus extended support after OSS End-Of-Life.
Publicly available releases for critical bugfixes and security issues when requested by customers.

Future release

Generation not yet released, timeline is subject to changes.

About commercial support (*)

This page shows the current state of project releases and does not define the commercial support policy. Please refer to the official support policy for more information.