복붙노트

[SPRING] Spring Data Mongo로 여러 MongoDB 저장소 구성

SPRING

Spring Data Mongo로 여러 MongoDB 저장소 구성

나는 2 MongoTemplate-s와 함께 Spring Boot app에 연결된 2 Mongodb 데이터베이스를 가지고있다 :

mongoTemplate (기본 빈 이름, 기본 db에 연결)

mongoAppTemplate (런타임에 다른 데이터베이스에 연결)

나는 mongoTemplate을 사용하는 MongoRepository-s를 많이 가지고 있지만 mongoAppTemplate을 사용할 일부를 만들고 싶습니다.

2 개의 MongoRepository-s가 Java 구성을 사용하여 다른 MongoTemplate -s를 사용하도록 구성하려면 어떻게합니까?

XML (아래 링크)을 사용하여이를 수행하는 방법을 찾았지만 모든 주석 기반을 유지하려고합니다.

Spring-data-mongodb는 하나의 Mongo 인스턴스에서 여러 데이터베이스에 연결합니다.

해결법

  1. ==============================

    1.기본 개념은 리포지토리가 포함 된 패키지 계층 구조를 두 개의 다른 경로로 분리하는 것입니다.

    기본 개념은 리포지토리가 포함 된 패키지 계층 구조를 두 개의 다른 경로로 분리하는 것입니다.

    XML 구성은 다음과 같아야합니다.

    <mongo:repositories base-package="com.whatever.repositories.main" mongo-template-ref="mongoTemplate"/>
    <mongo:repositories base-package="com.whatever.repositories.secondary" mongo-template-ref="mongoAppTemplate"/>
    

    편집하다

    @EnableMongoRepositories 주석은 @ Repeable이지만 @EnableMongoRepositories로 주석 처리 된 두 개의 @Configuration 클래스를 사용하여 주석을 사용하여 동일한 결과를 얻을 수 있습니다.

    @Configuration
    @EnableMongoRepositories(basePackages = "com.whatever.repositories.main", mongoTemplateRef = "mongoTemplate")
    public class MainMongoConfig {
        ....
    }
    
    @Configuration
    @EnableMongoRepositories(basePackages = "com.whatever.repositories.secondary", mongoTemplateRef = "mongoAppTemplate")
    public class SecondaryMongoConfig {
        ....
    }
    

    @Configuration 어노테이션이 적용된 세 번째 클래스는 다른 두 클래스를 가져옵니다.

  2. from https://stackoverflow.com/questions/31681546/configure-multiple-mongodb-repositories-with-spring-data-mongo by cc-by-sa and MIT license