MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Menu Docs
Página inicial do Docs
/ /

Introdução ao MongoDB da Spring Session

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.

Conclua as etapas a seguir para configurar seu aplicação Spring Boot e instalar o MongoDB Spring Session em seu ambiente de desenvolvimento.

1

Antes de iniciar este tutorial, certifique-se de instalar e configurar os seguintes pré-requisitos:

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.

2

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 .

3

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.

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.

1

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.

O botão de conexão na seção de clusters da UI do Atlas

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.

2

Clique no botão à direita da string de conexão para copiá-la para a área de transferência, como mostrado na seguinte captura de tela:

O botão de cópia da connection string na interface de usuário do Atlas
3

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.

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.

1

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.

2

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;
@Configuration
@EnableMongoHttpSession
public class SessionConfig {
}

Essa classe de configuração habilita o gerenciamento de sessões HTTP apoiadas MongoDB para seu aplicação Spring Boot.

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 .

1

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;
@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 é 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ção bulk.products e 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

2

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;
@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 fim, siga as etapas nesta seção para executar seu aplicação e explorar a funcionalidade de armazenamento de sessão.

1

Execute seu aplicação em seu IDE ou execute o seguinte comando em seu terminal:

./mvnw spring-boot:run

Seu aplicação inicia, executa a operação de inserção em massa e, em seguida, fornece endpoints da web em http://localhost:8080.

2

Abra seu navegador da Web ou use uma ferramenta como o curl para testar os seguintes endpoints habilitados para sessão:

  1. Pesquisar produtos: para consultar os documentos inseridos na bulk.products coleção, visite http://localhost:8080/products/search?name= e anexe um nome de produto ao URL. Por exemplo, você pode pesquisar documentos que tenham um name valor 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"
    },
    ...
    ]
    }
  2. 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
    }
3

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.

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:

Voltar

Sessão de primavera MongoDB

Nesta página