Docs Menu
Docs Home
/ /

Introducción a Spring Session MongoDB

En este tutorial, aprenderá a usar Spring Session MongoDB en una aplicación Spring Boot. Spring Session MongoDB es una integración de código abierto mantenida por MongoDB que permite a las aplicaciones almacenar Sesión de primavera datos en MongoDB.

Siga este tutorial para conectar una aplicación Spring Boot de muestra a una implementación de MongoDB Atlas para el almacenamiento de sesiones.

Tip

Este tutorial modifica la aplicación Spring Boot creada en el Tutorial deintegración de Spring Data Framework. Los pasos de esta página muestran cómo actualizar la aplicación para usar Spring Session MongoDB.

Completa los siguientes pasos para configurar tu aplicación Spring Boot e instalar Spring Session MongoDB en tu entorno de desarrollo.

1

Antes de comenzar este tutorial, asegúrese de instalar y configurar los siguientes requisitos previos:

Nota

Este tutorial muestra cómo instalar Spring Session MongoDB usando Maven en un IDE. Si no usa un IDE, visite "Building Maven" para aprender a configurar su proyecto.

2

Completa el tutorial de integración de Spring Data Framework para crear una nueva aplicación Spring Boot. También puedes ver y clonar el código de la aplicación visitando el repositorio SpringDataMongoBulkInsert en GitHub.

Después de completar este tutorial previo, tendrá una nueva aplicación que utiliza Spring Data MongoDB para realizar una operación de inserción masiva en una colección MongoDB.

3

En tu pom.xml archivo, reemplace su dependencia spring-boot-starter-parent con el siguiente código:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.0.0</version>
<relativePath/> <!-- Lookup parent from repository -->
</parent>

Esto garantiza que su aplicación utilice Spring Boot 4.0, que es compatible con Spring Session 4.0.

Luego, agregue la siguiente dependencia a la lista de dependencias de su archivo para usar Spring Session MongoDB:

<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-spring-session</artifactId>
<version>4.0.0-rc0</version>
</dependency>

Después de configurar las dependencias, es necesario garantizar que estén disponibles para el proyecto ejecutando el administrador de dependencias y actualizando el proyecto en el IDE.

Complete los siguientes pasos para conectarse a su implementación de MongoDB recuperando una URI de conexión, también llamada cadena de conexión. La URI de conexión indica al controlador cómo conectarse a una implementación de MongoDB y cómo comportarse mientras está conectado.

1

Para recuperar su cadena de conexión para su implementación de MongoDB, inicie sesión en su cuenta Atlas y navegue hasta Clusters Página en la sección Database. Haga clic en el botón Connect para su nueva implementación.

El botón de conexión en la sección de clústeres de la interfaz de usuario de Atlas

Si aún no tiene un usuario de base de datos configurado, MongoDB le solicitará que cree y configure un nuevo usuario.

Haga clic en el botón Drivers debajo de Connect to your application y seleccione "Java" en el menú de selección Driver y la versión que mejor coincida con la versión que instaló en el menú de selección Version.

Asegúrate de que la opción View full code sample esté desmarcada para ver solo la cadena de conexión.

2

Haz clic en el botón a la derecha de la cadena de conexión para copiarla en el portapapeles, como se muestra en la siguiente captura de pantalla:

El botón de copia de la cadena de conexión en la Interfaz de Usuario de Atlas
3

Pega esta cadena de conexión en un archivo en tu editor de texto preferido y reemplaza el marcador de posición <db_password> con la contraseña de tu usuario de base de datos. La cadena de conexión ya está completada con el nombre de usuario de tu usuario de base de datos.

Guarde este archivo en una ubicación segura para usarlo en un próximo paso.

Después de completar el tutorial de Spring Data y acceder a su URI de conexión, puede agregar Spring Session MongoDB a su aplicación para habilitar la administración de sesiones.

1

Navegue hasta su application.properties archivo en el src/main/resources directorio. Asegúrese de que este archivo especifique su base de datos MongoDB, la URI de conexión y el número de documentos que desea insertar, como se describe en la sección "Configurar su MongoClient" del tutorial de Spring Data. Si la configuración es correcta, su archivo contendrá el siguiente código:

mongodb.database=bulk
mongodb.uri=<connection URI>
documentCount=25000

Reemplace el <connection URI> marcador de posición con la URI de conexión que guardó en la sección anterior.

2

Crea un nuevo archivo llamado SessionConfig.java en el directorio del paquete base de tu proyecto y pega el siguiente código:

package com.mongodb.examples.springdatabulkinsert;
import org.mongodb.spring.session.config.annotation.web.http.EnableMongoHttpSession;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableMongoHttpSession
public class SessionConfig {
}

Esta clase de configuración habilita la gestión de sesiones HTTP respaldada por MongoDB para su aplicación Spring Boot.

A continuación, agregue puntos finales web que demuestren la gestión de sesiones al trabajar con los datos del producto desde su aplicación Spring Data MongoDB.

1

Crea un archivo llamado ProductWebController.java en el directorio del paquete base de tu proyecto y pega el siguiente código:

package com.mongodb.examples.springdatabulkinsert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import jakarta.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@RestController
public class ProductWebController {
@Autowired
private MongoTemplate mongoTemplate;
@GetMapping("/products/search")
public Map<String, Object> searchProducts(
@RequestParam(required = false) String name,
HttpSession session) {
@SuppressWarnings("unchecked")
List<String> searchHistory = (List<String>) session.getAttribute("searchHistory");
if (searchHistory == null) {
searchHistory = new ArrayList<>();
}
// Defines the default search if no name is provided
if (name == null || name.trim().isEmpty()) {
name = "product";
}
// Adds the current search to history
searchHistory.add(name);
session.setAttribute("searchHistory", searchHistory);
// Queries the "name" field in the "products" collection
Query query = new Query(Criteria.where("name").regex(name, "i"));
List<Product> products = mongoTemplate.find(query, Product.class, "products");
return Map.of(
"products", products,
"sessionId", session.getId()
);
}
@GetMapping("/products/history")
public Map<String, Object> getSearchHistory(HttpSession session) {
// Retrieves the search history from the session
@SuppressWarnings("unchecked")
List<String> searchHistory = (List<String>) session.getAttribute("searchHistory");
if (searchHistory == null) {
searchHistory = new ArrayList<>();
}
return Map.of(
"searchHistory", searchHistory,
"sessionId", session.getId(),
"searchCount", searchHistory.size()
);
}
}

ProductWebController.java Es un controlador REST que demuestra la funcionalidad de la sesión al interactuar con los datos de producto existentes. Este archivo define los siguientes puntos finales web:

  • /products/search: Busca productos en la colección bulk.products y almacena cada término de búsqueda en la sesión del usuario

  • /products/history:Recupera datos del historial de búsqueda de la sesión del usuario almacenados en MongoDB

2

Antes de probar los nuevos puntos de conexión web, actualice la clase principal de la aplicación para mantenerla en ejecución y generar información sobre los puntos de conexión. Reemplace el contenido de SpringDataBulkInsertApplication.java con el siguiente código:

package com.mongodb.examples.springdatabulkinsert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringDataBulkInsertApplication implements CommandLineRunner {
@Value("${documentCount}")
private int count;
private static final Logger LOG = LoggerFactory
.getLogger(SpringDataBulkInsertApplication.class);
@Autowired
private ProductRepository repository;
public static void main(String[] args) {
SpringApplication.run(SpringDataBulkInsertApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
repository.bulkInsertProducts(count);
LOG.info("Bulk insert completed. Web endpoints are now available.");
LOG.info("You can visit these URLs:");
LOG.info(" http://localhost:8080/products/search?name=goose");
LOG.info(" http://localhost:8080/products/history");
}
}

Por último, siga los pasos de esta sección para ejecutar su aplicación y explorar la funcionalidad de almacenamiento de sesiones.

1

Ejecute su aplicación en su IDE o ejecute el siguiente comando en su terminal:

./mvnw spring-boot:run

Su aplicación se inicia, realiza la operación de inserción masiva y luego proporciona puntos finales web en http://localhost:8080.

2

Abra su navegador web o utilice una herramienta como curl para probar los siguientes puntos finales habilitados para sesión:

  1. Buscar productos: Para consultar los documentos insertados en la bulk.products colección, visite http://localhost:8080/products/search?name= y añada el nombre del producto a la URL. Por ejemplo, puede buscar documentos cuyo name valor "goose" sea visitando http://localhost:8080/products/search?name=goose.

    La salida contiene su ID de sesión y una lista de documentos que coinciden con su consulta de campo name, como se muestra en el siguiente ejemplo de salida:

    {
    "sessionId": "...",
    "products": [
    {
    "name": "goose",
    "qty": 788,
    "price": 9680,
    "available": "...",
    "unavailable": "...",
    "skuId": "276-68-7836"
    },
    {
    "name": "goose",
    "qty": 984,
    "price": 2307,
    "available": "...",
    "unavailable": "...",
    "skuId": "068-88-9345"
    },
    ...
    ]
    }
  2. Ver historial de búsqueda: para ver su historial de búsqueda, visite http://localhost:8080/products/history.

    La salida contiene su ID de sesión, una lista de nombres de productos que buscó y la cantidad total de búsquedas, como se muestra en el siguiente ejemplo de salida:

    {
    "sessionId": "...",
    "searchHistory": [
    "goose",
    "bear"
    ],
    "searchCount": 2
    }
3

Si detiene su aplicación y la ejecuta nuevamente, MongoDB conserva los datos de su sesión.

Detenga la aplicación en su IDE o terminal. Luego, reiníciela.
en su IDE, o ejecute el siguiente comando en su terminal:
./mvnw spring-boot:run

Si visita la URL http://localhost:8080/products/history, podrá ver su historial de búsquedas anterior a pesar del reinicio de la aplicación. Estos datos siguen disponibles porque se almacenaron en MongoDB y no en la memoria.

Nota

Tiempo de espera de sesión

El tiempo de espera por defecto de la sesión de Spring Session MongoDB es de 30 minutos. Si reinicias tu aplicación después de 30 minutos de inactividad, tu sesión expira y MongoDB ya no almacena los datos de sesiones anteriores.

¡Felicidades por completar el tutorial!

Nota

Si encuentra algún problema en este tutorial, envíe sus comentarios mediante la pestaña Rate this page en el lado derecho o inferior derecho de esta página.

Puede encontrar soporte para preguntas generales mediante la etiqueta Stack Overflow de MongoDB o la comunidad de Reddit de MongoDB.

En este tutorial, actualizaste tu aplicación Spring Data MongoDB para usar Spring Session MongoDB y almacenar las sesiones de usuario en la misma implementación de MongoDB que contiene los datos de tu producto. La aplicación muestra la gestión de sesiones junto con las operaciones masivas y las consultas de datos.

Para continuar desarrollando su aplicación, consulte los siguientes recursos:

Volver

Sesión de primavera de MongoDB

En esta página