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.
2022.0.0-M2 PRE Reference Doc.
2021.2.0-RC1 PRE Reference Doc.
2021.1.3 GA Reference Doc.
2021.0.6 GA Reference Doc.
2020.0.7 GA Reference Doc.