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

Spring 세션 MongoDB 시작하기

이 튜토리얼에서는 Spring Boot 애플리케이션 에서 Spring Session MongoDB 사용하는 방법을 학습 수 있습니다. Spring Session MongoDB 는 애플리케이션이 Spring Session 데이터를 MongoDB 에 저장 수 있도록 MongoDB 에서 유지 관리하는 오픈 소스 통합입니다.

이 튜토리얼에 따라 샘플 Spring Boot 애플리케이션 세션 저장 위해 MongoDB Atlas 배포서버 서버에 연결합니다.

이 튜토리얼에서는 Spring Data Framework Integration 튜토리얼에서 만든 Spring Boot 애플리케이션 수정합니다. 이 페이지의 단계에서는 Spring Session MongoDB 사용하도록 해당 애플리케이션 업데이트 방법을 보여줍니다.

다음 단계를 완료하여 Spring Boot 애플리케이션 설정하다 하고 개발 환경에 Spring Session MongoDB 설치합니다.

1

이 튜토리얼을 시작하기 전에 다음 필수 구성 요소를 설치하고 설정하다 했는지 확인하세요.

참고

이 튜토리얼에서는 IDE에서 Maven을 사용하여 Spring Session MongoDB 설치하는 방법을 보여줍니다. IDE를 사용하지 않는 경우 Maven 빌드를 방문하여 프로젝트 설정하다 방법을 학습 .

2

Spring Data Framework Integration 튜토리얼을 완료하여 새 Spring Boot 애플리케이션 생성합니다. GitHub의 SpringDataMongoBulkInsert 리포지토리 방문하여 애플리케이션 코드를 보고 복제할 수도 있습니다.

이 필수 튜토리얼을 완료하면 Spring Data MongoDB 사용하여 MongoDB 컬렉션 에서 대량 삽입 작업을 수행하는 새 애플리케이션 갖게 됩니다.

3

pom.xml 파일 에서 spring-boot-starter-parent 종속성을 다음 코드로 바꿉니다.

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

이렇게 하면 애플리케이션 이 Spring Session 4.0과 호환되는 Spring Boot 4.0을(를) 사용할 수 있습니다.

그런 다음 파일의 종속성 목록에 다음 종속성을 추가하여 Spring Session MongoDB 사용하세요.

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

종속성을 구성한 후에는 종속성 관리자를 실행 하고 IDE에서 프로젝트 를 새로 고쳐 프로젝트 에서 사용할 수 있는지 확인합니다.

다음 단계를 완료하여 연결 문자열 이라고도 하는 연결 URI를 검색하여 MongoDB deployment 에 연결합니다. 연결 URI는 운전자 에 MongoDB deployment 에 연결하는 방법과 연결된 동안 동작하는 방법을 지시합니다.

1

MongoDB deployment 대한 연결 문자열 조회 하려면 Atlas 계정에 로그 Database 섹션 아래의 Clusters 페이지로 이동합니다. 새 배포서버 의 Connect 버튼을 클릭합니다.

Atlas UI의 클러스터 섹션에 있는 연결 버튼

아직 데이터베이스 사용자를 구성하지 않은 경우 MongoDB 새 사용자를 생성하고 구성하라는 메시지를 표시합니다.

Connect to your application 아래의 Drivers 버튼을 클릭하고 Driver 선택 메뉴에서 "Java"를 선택하고 Version 선택 메뉴에서 설치한 버전과 가장 일치하는 버전을 선택합니다.

연결 문자열 만 보려면 View full code sample 옵션의 선택을 취소합니다.

2

다음 스크린샷과 같이 연결 string 오른쪽에 있는 버튼을 클릭하여 클립보드에 복사합니다.

Atlas UI의 연결 문자열 복사 버튼
3

이 연결 문자열 원하는 텍스트 편집기의 파일 에 붙여넣고 <db_password> 자리 표시자를 데이터베이스 사용자의 비밀번호로 바꿉니다. 연결 문자열 이 이미 데이터베이스 사용자의 사용자 이름 으로 채워져 있습니다.

다음 단계에서 사용할 수 있도록 이 파일 안전한 위치 에 저장합니다.

Spring Data 튜토리얼을 완료하고 연결 URI에 액세스한 후 애플리케이션 에 Spring Session MongoDB 추가하여 세션 관리 활성화 할 수 있습니다.

1

디렉토리 에서 파일 로 이동합니다. Spring application.properties src/main/resources 데이터 튜토리얼의 MongoClient 구성 섹션에 설명된 대로 이 파일 MongoDB database, 연결 URI 및 삽입할 문서 수를 지정하는지 확인합니다. 올바르게 구성된 경우 파일 다음 코드가 포함됩니다.

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

자리 표시자를 이전 섹션에서 저장한 <connection URI> 연결 URI로 바꿉니다.

2

프로젝트의 기본 패키지 디렉토리 에 SessionConfig.java 라는 새 파일 만들고 다음 코드를 붙여넣습니다.

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 {
}

이 구성 클래스를 사용하면 Spring Boot 애플리케이션 에 대한 MongoDB 지원 HTTP 세션 관리 사용할 수 있습니다.

다음으로, Spring Data MongoDB 애플리케이션 의 제품 데이터로 작업할 때 세션 관리 시연하는 웹 엔드포인트를 추가합니다.

1

프로젝트의 기본 패키지 디렉토리 에 ProductWebController.java 라는 파일 만들고 다음 코드를 붙여넣습니다.

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 기존 제품 데이터와 상호 작용하여 세션 기능을 시연하는 REST 컨트롤러입니다. 이 파일 다음과 같은 웹 엔드포인트를 정의합니다.

  • /products/search: bulk.products 컬렉션 에서 제품을 검색하고 각 검색 텀 사용자 세션에 저장합니다.

  • /products/history: MongoDB 에 저장된 사용자 세션에서 검색 기록 데이터를 조회합니다.

2

새 웹 엔드포인트를 테스트하기 전에 애플리케이션 실행 엔드포인트에 대한 정보를 출력하도록 메인 애플리케이션 클래스를 업데이트 . SpringDataBulkInsertApplication.java 의 내용을 다음 코드로 바꿉니다.

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");
}
}

마지막으로 이 섹션의 단계에 따라 애플리케이션 실행 하고 세션 저장 기능을 탐색합니다.

1

IDE에서 애플리케이션 실행하거나 터미널에서 다음 명령을 실행 .

./mvnw spring-boot:run

애플리케이션 시작되고 대량 삽입 작업을 수행한 다음 http://localhost:8080에서 웹 엔드포인트를 제공합니다.

2

웹 브라우저를 열거나 curl과 같은 도구를 사용하여 다음 세션 지원 엔드포인트를 테스트합니다.

  1. 제품 검색: 컬렉션 에 삽입된 문서를 쿼리 하려면 을 bulk.products http://localhost:8080/products/search?name= 방문하여 URL 에 제품 이름을 추가합니다. 예시 들어,name "goose" http://localhost:8080/products/ 검색 ?name=goose를 방문하여 값이인 문서를 검색 할 수 있습니다.

    출력에는 다음 샘플 출력과 같이 세션 ID 및 name 필드 쿼리 와 일치하는 문서 목록이 포함됩니다.

    {
    "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. 검색 기록 보기: 검색 기록을 보려면 http://localhost:8080/products/history를 방문합니다.

    출력에는 다음 샘플 출력과 같이 세션 ID , 검색한 제품 이름 목록, 총 검색 수가 포함됩니다.

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

애플리케이션 중지했다가 다시 실행 MongoDB 세션 데이터를 유지합니다.

IDE 또는 터미널에서 애플리케이션 중지합니다. 그런 다음 다시 시작합니다.
IDE에서 실행하거나 터미널에서 다음 명령을 실행 .
./mvnw spring-boot:run

http://localhost:8080/products/history URL 방문하면 애플리케이션 재부팅하더라도 이전 검색 기록을 볼 수 있습니다. 이 데이터는 메모리가 아닌 MongoDB 에 저장되었기 때문에 계속 사용할 수 있습니다.

참고

세션 시간 초과

Spring Session MongoDB의 기본값 세션 시간 제한은 30 분입니다. 30 분 동안 사용하지 않은 후 애플리케이션 다시 시작하면 세션이 만료되고 MongoDB 더 이상 이전 세션 데이터를 저장하지 않습니다.

튜토리얼을 완료한 것을 축하합니다!

참고

이 튜토리얼에서 문제가 실행 하면 이 페이지의 오른쪽 또는 오른쪽 하단에 있는 Rate this page 탭 사용하여 피드백 제출 .

일반적인 질문에 대한 지원은 MongoDB Stack Overflow 태그 또는 MongoDB Reddit Community를 사용하여 찾을 수 있습니다.

이 튜토리얼에서는 Spring Session MongoDB 사용하고 제품 데이터가 포함된 동일한 MongoDB deployment 에 사용자 세션을 저장 하도록 Spring Data MongoDB 애플리케이션 업데이트했습니다. 이 애플리케이션 대량 작업 및 데이터 쿼리와 함께 작동하는 세션 관리 보여 줍니다.

애플리케이션 계속 개발하려면 다음 리소스를 참조하세요.

돌아가기

스프링 세션 MongoDB

이 페이지의 내용