使用 Spring 数据 Mongo 配置多个 MongoDB 存储库

Configure Multiple MongoDB repositories with Spring Data Mongo

我有 2 个 Mongodb 数据库连接到带有 2 个 MongoTemplate-s 的 Spring 引导应用程序:

mongoTemplate(默认bean名称,连接到默认数据库)

mongoAppTemplate(在 运行 时间连接到另一个数据库)

我有很多使用 mongoTemplate 的 MongoRepository-s,但我也想创建一些使用 mongoAppTemplate 的。

如何配置 2 个 MongoRepository-s 以使用具有 Java 配置的不同 MongoTemplate -s?

我找到了一种使用 XML 的方法(下面的 link),但我真的想保留所有基于注释的方法

Spring-data-mongodb connect to multiple databases in one Mongo instance

基本思想是将包含您的存储库的包层次结构分成两个不同的路径:

  • com.whatever.repositories.main 主数据库存储库接口包
  • com.whatever.repositories.secondary 其他数据库存储库接口的包

您的 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注解不是@Repeatable,但是你可以有两个@Configurationclasses,每个都用@EnableMongoRepositories注解,以达到相同的效果使用注释:

@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 注释 class 其中 @Import 另外两个