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

Mic*_*ash 9 spring spring-mvc spring-data spring-data-mongodb spring-boot

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

mongoTemplate(默认的bean名称,连接到默认的db)

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

我有很多使用mongoTemplate的MongoRepository-s但我也想创建一些使用mongoAppTemplate的东西.

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

我找到了一种方法来使用XML(下面的链接),但我真的想保持它所有的注释

Spring-data-mongodb连接到一个Mongo实例中的多个数据库

Ori*_*Dar 11

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

  • com.whatever.repositories.main包用于主db存储库接口
  • com.whatever.repositories.secondary包用于其他db存储库接口

您的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"/>
Run Code Online (Sandbox Code Playgroud)

编辑

@EnableMongoRepositories注释不是@Repeatable,但是您可以有两个@Configuration类,每个类都注释,@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 {
    ....
}
Run Code Online (Sandbox Code Playgroud)

还有第三个@Configuration注释类,@Import另外两个.