Overview
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.
Sigue este tutorial para conectar una aplicación de muestra de Spring Boot a un implementación de MongoDB Atlas para el almacenamiento de sesiones.
Tip
Este tutorial modifica la aplicación Spring Boot creada en el Tutorial de Integración con el Framework de Spring Data. Los pasos en esta página muestran cómo actualizar esa aplicación para utilizar Spring Session MongoDB.
Configurar el proyecto
Completa los siguientes pasos para configurar tu aplicación Spring Boot e instalar Spring Session MongoDB en tu entorno de desarrollo.
Verificar los prerrequisitos.
Antes de comenzar este tutorial, asegúrate de instalar y configurar los siguientes requisitos previos:
JDK versión 17 o posterior
Entorno de desarrollo integrado (IDE), como IntelliJ IDEA o Eclipse
Nota
Este tutorial muestra cómo instalar Spring Session MongoDB utilizando Maven en un IDE. Si no utilizas un IDE, visita Compilación de Maven para aprender cómo configurar tu proyecto.
Crear un nuevo proyecto de Spring Boot.
Completa el tutorial Integración del marco de datos de Spring para crear una nueva aplicación Spring Boot. También puede ver y clonar el código de la aplicación visitando el repositorio SpringDataMongoBulkInsert en GitHub.
Después de completar este tutorial previo, tendrás una nueva aplicación que utiliza Spring Data MongoDB para realizar una operación de inserción masiva en una colección de MongoDB.
Actualiza las dependencias de tu proyecto.
En tu pom.xml archivo, sustituye tu spring-boot-starter-parent dependencia 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.
Conectarse a una implementación de MongoDB
Completa los siguientes pasos para conectarte a tu implementación de MongoDB recuperando un URI de conexión, también conocido como una cadena de conexión. El URI de conexión indica al controlador cómo conectarse a una implementación de MongoDB y cómo comportarse mientras está conectado.
Encuentra tu cadena de conexión de MongoDB Atlas.
Para recuperar tu cadena de conexión para tu implementación de MongoDB, inicia sesión en tu cuenta de Atlas y navega al Clusters la página en la sección Database. Haz clic en el botón Connect para tu nueva implementación.

Si aún no tienes configurado un usuario de base de datos, MongoDB te pedirá que crees y configures un nuevo usuario.
Haga clic en el botón Drivers bajo Connect to your application y seleccione "Java" desde el menú de selección Driver y la versión que mejor coincida con la versión que instaló desde 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.
Actualiza el marcador de posición de la contraseña.
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 su uso en un paso próximo.
Configurar Spring Session MongoDB
Después de completar el tutorial de Spring Data y acceder a su URI de conexión, puede añadir Spring Session MongoDB a su aplicación para permitir la gestión de sesiones.
Verifique su conexión MongoDB.
Navega a tu archivo application.properties en el directorio src/main/resources. Asegúrate de que este archivo especifique tu base de datos MongoDB, el URI de conexión y el número de documentos a insertar, como se describe en la sección Configura tu MongoClient del tutorial de Spring Data. Si se configura correctamente, su archivo contiene el siguiente código:
mongodb.database=bulk mongodb.uri=<connection URI> documentCount=25000
Reemplace el marcador de posición <connection URI> por el URI de conexión que guardó en la sección anterior.
Crea tu clase de configuración de Spring Session.
Crea un archivo nuevo 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; public class SessionConfig { }
Esta clase de configuración habilita la gestión de sesiones HTTP respaldada por MongoDB para tu aplicación Spring Boot.
Agregar puntos finales web con conocimiento de sesión
A continuación, añade puntos finales web que demuestren la gestión de sesiones al trabajar con los datos del producto de su aplicación Spring Data MongoDB.
Cree un controlador web.
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; public class ProductWebController { private MongoTemplate mongoTemplate; public Map<String, Object> searchProducts( String name, HttpSession session) { 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() ); } public Map<String, Object> getSearchHistory(HttpSession session) { // Retrieves the search history from the session 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 sesión al interactuar con tus datos de producto existentes. Este archivo define los siguientes endpoints web:
/products/search: Busca productos en la colecciónbulk.productsy almacena cada término de búsqueda en la sesión del usuario/products/historyRecupera los datos de historial de búsqueda de la sesión del usuario almacenada en MongoDB
Actualiza tu clase principal de aplicación.
Antes de probar los nuevos puntos finales web, actualiza tu clase principal de aplicación para mantener la aplicación en ejecución y proporcionar información sobre los puntos finales. 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; public class SpringDataBulkInsertApplication implements CommandLineRunner { private int count; private static final Logger LOG = LoggerFactory .getLogger(SpringDataBulkInsertApplication.class); private ProductRepository repository; public static void main(String[] args) { SpringApplication.run(SpringDataBulkInsertApplication.class, args); } 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"); } }
Ejecutar la aplicación
Por último, sigue los pasos de esta sección para ejecutar tu aplicación y explorar la funcionalidad de almacenamiento de sesión.
Prueba la funcionalidad de la sesión.
Abra su navegador web o utilice una herramienta como curl para probar los siguientes puntos finales habilitados para sesión:
Búsqueda de productos: Para consultar los documentos insertados en la colección
bulk.products, visitahttp://localhost:8080/products/search?name=y añade el nombre de un producto a la URL. Por ejemplo, puedes buscar documentos que tengan unnamevalor de"goose"visitando http://localhost:8080/products/search?name=goose.La salida contiene el ID de tu sesión y una lista de documentos que coinciden con tu query de campo
name, como se muestra en el siguiente ejemplo de muestra:{ "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" }, ... ] } Ver historial de búsqueda: Para ver tu historial de búsqueda, visita http://localhost:8080/products/history.
La salida contiene tu ID de sesión, una lista de los nombres de productos que buscaste y el número total de búsquedas, como se muestra en la siguiente muestra de salida:
{ "sessionId": "...", "searchHistory": [ "goose", "bear" ], "searchCount": 2 }
Reinicia la aplicación.
Si detienes tu aplicación y la ejecutas nuevamente, MongoDB persiste los datos de tu sesión.
- Detén tu aplicación en tu IDE o terminal. Después, reinícialo/a.
- en su IDE, o ejecute el siguiente comando en su terminal:
./mvnw spring-boot:run
Si visitas la URL http://localhost:8080/products/history, puedes ver tu historial de búsquedas anteriores a pesar de que la aplicación se reinicie. Estos datos aún están disponibles porque se almacenaron en MongoDB en lugar de en la memoria.
Nota
Tiempo de espera de la 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.
Próximos pasos
¡Felicidades por completar el tutorial!
Nota
Si te encuentras con problemas en este tutorial, envía tus comentarios utilizando la pestaña Rate this page ubicada en el lado derecho o en la parte inferior derecha 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 tu aplicación, consulta los siguientes recursos:
