Visão geral
Neste tutorial, você pode aprender como usar o Spring Session MongoDB em um aplicação Spring Boot. O MongoDB do Spring Session é uma integração de código aberto mantida pelo MongoDB que permite que os aplicativos armazenem dados doSpring Session no MongoDB.
Siga este tutorial para conectar um aplicação Spring Boot de amostra a uma implantação do MongoDB Atlas para armazenamento de sessão.
Dica
Este tutorial modifica o aplicação Spring Boot criado no tutorial de integração da estrutura de dados Spring. As etapas nesta página mostram como atualizar esse aplicação para usar o MongoDB da Spring Session.
Configurar seu projeto
Conclua as etapas a seguir para configurar seu aplicação Spring Boot e instalar o MongoDB Spring Session em seu ambiente de desenvolvimento.
Verifique os pré-requisitos.
Antes de iniciar este tutorial, certifique-se de instalar e configurar os seguintes pré-requisitos:
JDK versão 17 ou posterior
Ambiente de desenvolvimento integrado (IDE), como IntelliJ IDEA ou Eclipse
Observação
Este tutorial mostra como instalar o Spring Session MongoDB usando o Maven em um IDE. Se você não usar um IDE, visite Construção do Maven para saber como configurar seu projeto.
Crie um novo projeto Spring Boot .
Conclua o tutorial de integração da estrutura de dados do Spring para criar um novo aplicação Spring Boot. Você também pode visualizar e clonar o código do aplicação acessando o repositório SpringDataMongoBulkInsert no GitHub.
Depois de concluir este tutorial de pré-requisito, você tem um novo aplicação que usa o Spring Data MongoDB para executar uma operação de inserção em massa em uma coleção do MongoDB .
Atualize as dependências do seu projeto .
No seu arquivo pom.xml, substitua sua dependência spring-boot-starter-parent pelo seguinte 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>
Isso garante que seu aplicação use o Spring Boot 4.0, que é compatível com o Spring Session 4.0.
Em seguida, adicione a seguinte dependência à lista de dependências do seu arquivo para usar o Spring Session MongoDB:
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-spring-session</artifactId> <version>4.0.0-rc0</version> </dependency>
Depois de configurar suas dependências, certifique-se de que elas estejam disponíveis para seu projeto executando o gerenciador de dependências e atualizando o projeto em seu IDE.
Conecte-se a um MongoDB deployment
Conclua as etapas a seguir para se conectar à sua deployment do MongoDB recuperando um URI de conexão, também chamado de string de conexão. O URI de conexão instrui o driver sobre como se conectar a uma implantação MongoDB e como se comportar enquanto estiver conectado.
Encontre sua string de conexão do MongoDB Atlas.
Para recuperar a string de conexão para a implantação do MongoDB , faça login na sua conta do Atlas e navegue até a página Clusters na seção Database. Clique no botão Connect para sua nova implementação.

Se você ainda não tiver um usuário de banco de dados configurado, o MongoDB solicitará que você crie e configure um novo usuário.
Clique no botão Drivers em Connect to your application e selecione "Java" no menu de seleção Driver e a versão que melhor corresponde à versão instalada no menu de seleção Version.
Certifique-se de que a opção View full code sample esteja desmarcada para visualizar somente a string de conexão.
Atualize o espaço reservado para senha.
Cole esta string de conexão em um arquivo no editor de texto de sua preferência e substitua o espaço reservado <db_password> pela senha do usuário de banco de dados. A string de conexão já está preenchida com o nome de usuário do seu usuário de banco de dados.
Salve este arquivo em um local seguro para uso em uma etapa seguinte.
Configurar MongoDB da Sessão de Mola
Depois de concluir o tutorial Spring Data e acessar o URI de conexão, você pode adicionar Spring Session MongoDB ao seu aplicação para habilitar o gerenciamento de sessões.
Verifique sua conexão com o MongoDB .
Navegue até seu application.properties arquivo no src/main/resources diretório. Certifique-se de que esse arquivo especifique seu banco de dados MongoDB , URI de conexão e o número de documentos a inserir, conforme descrito na seção Configure your MongoClient do tutorial Spring Data. Se configurado corretamente, seu arquivo contém o seguinte código:
mongodb.database=bulk mongodb.uri=<connection URI> documentCount=25000
Substitua <connection URI> o espaço reservado pelo URI de conexão que você salvou na seção anterior.
Crie sua classe de configuração da Spring Session.
Crie um novo arquivo denominado SessionConfig.java no diretório do pacote base do seu projeto e cole o seguinte 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 { }
Essa classe de configuração habilita o gerenciamento de sessões HTTP apoiadas MongoDB para seu aplicação Spring Boot.
Adicionar endpoints da web com reconhecimento de sessão
Em seguida, adicione endpoints da web que demonstram o gerenciamento de sessões ao trabalhar com os dados do produto do seu aplicação Spring Data MongoDB .
Crie um controlador web.
Crie um arquivo chamado ProductWebController.java no diretório do pacote base do seu projeto e cole o seguinte 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 é um controlador REST que demonstra a funcionalidade da sessão interagindo com os dados do produto existente. Este arquivo define os seguintes endpoints da web:
/products/search: Pesquisa produtos na coleçãobulk.productse armazena cada termo de pesquisa na sessão do usuário/products/history: recupera dados do histórico de pesquisa da sessão do usuário armazenada no MongoDB
Atualize sua classe de aplicação principal.
Antes de testar os novos endpoints da web, atualize a classe principal do aplicação para manter o aplicação em execução e gerar informações sobre os endpoints. Substitua o conteúdo de SpringDataBulkInsertApplication.java pelo seguinte 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"); } }
Execute seu aplicativo
Por fim, siga as etapas nesta seção para executar seu aplicação e explorar a funcionalidade de armazenamento de sessão.
Teste a funcionalidade da sessão.
Abra seu navegador da Web ou use uma ferramenta como o curl para testar os seguintes endpoints habilitados para sessão:
Pesquisar produtos: para consultar os documentos inseridos na
bulk.productscoleção, visitehttp://localhost:8080/products/search?name=e anexe um nome de produto ao URL. Por exemplo, você pode pesquisar documentos que tenham umnamevalor de ,"goose"visite http://localhost:8080/products/search?name=goose.O resultado contém o ID da sua sessão e uma lista de documentos que correspondem à sua query de campo
name, conforme mostrado no exemplo de resultado a seguir:{ "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" }, ... ] } Visualizar histórico de pesquisa: para visualizar seu histórico de pesquisa, visite http://localhost:8080/products/history.
O resultado contém seu ID de sessão, uma lista de nomes de produtos que você pesquisou e o número total de pesquisas, conforme mostrado na seguinte saída de exemplo:
{ "sessionId": "...", "searchHistory": [ "goose", "bear" ], "searchCount": 2 }
Reinicie seu aplicativo.
Se você interromper seu aplicação e executá-lo novamente, o MongoDB persistirá os dados da sessão.
- Interrompa seu aplicação no IDE ou no terminal. Em seguida, reinicie-o
- em seu IDE ou execute o seguinte comando em seu terminal:
./mvnw spring-boot:run
Se você visitar o http://localhost:8080/products/history URL, poderá ver seu histórico de pesquisa anterior, apesar da reinicialização do aplicação . Esses dados ainda estão disponíveis porque foram armazenados no MongoDB e não na memória.
Observação
Tempo limite da sessão
O tempo limite de sessão padrão do MongoDB para a sessão de primavera é de 30 minutos. Se você reiniciar seu aplicação após 30 minutos de inatividade, sua sessão expirará e o MongoDB não armazenará mais dados da sessão anterior.
Próximos passos
Parabéns por concluir o tutorial!
Observação
Se você tiver problemas neste tutorial, envie feedback usando a guia Rate this page no lado direito ou inferior direito desta página.
Você pode encontrar suporte para perguntas gerais usando a tag MongoDB Stack Overflow ou a comunidade MongoDB Reddit.
Neste tutorial, você atualizou seu aplicação Spring Data MongoDB para usar o Spring Session MongoDB e armazenar sessões de usuário na mesma implantação do MongoDB que contém os dados do produto. O aplicação demonstra o gerenciamento de sessões trabalhando junto com operações em massa e query de dados.
Para continuar desenvolvendo seu aplicação, consulte os seguintes recursos:
