Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spring Data Mongo配置多个MongoDB存储库_Spring_Spring Mvc_Spring Boot_Spring Data_Spring Data Mongodb - Fatal编程技术网

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

使用Spring Data Mongo配置多个MongoDB存储库,spring,spring-mvc,spring-boot,spring-data,spring-data-mongodb,Spring,Spring Mvc,Spring Boot,Spring Data,Spring Data Mongodb,我有2个Mongodb数据库连接到一个Spring Boot应用程序,其中有2个MongoTemplate-s: mongoTemplate(默认bean名称,连接到默认db) mongoAppTemplate(运行时连接到另一个数据库) 我有很多使用mongoTemplate的MongoRepository-s,但我也想创建一些使用mongoAppTemplate的 如何配置2个MongoRepository-s,以便在Java配置中使用不同的MongoTemplate-s? 我找到了一种使用

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

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

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

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

如何配置2个MongoRepository-s,以便在Java配置中使用不同的MongoTemplate-s?

我找到了一种使用XML(下面的链接)的方法,但我真的希望所有这些都基于注释


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

  • 主要数据库存储库接口的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"/>

第三个
@Configuration
注释类,它导入了另外两个
注释类。

通过注释可以获得相同的结果吗?@orid想知道是否采取了这种方法,添加第三个
@Configuration
注释类是多余的?否则,跳过前两个类中的
@Configuration
注释,然后合并到第三个类中。如何动态配置它?我的意思是,我有一个模板列表,并希望根据特定条件使用其中一个模板。最后,如何将MongoRepository实例注入到我的服务中?请你把整个样品竞争一下好吗?非常感谢。Hi@OriDar,有没有办法通过repository模式在同一个实例中的两个mongo数据库之间切换?通过“保持所有注释为基础”,您是在谈论连接的Java配置吗?或者是关于如何在相同或不同的类中使用不同的连接的问题?
@Configuration
@EnableMongoRepositories(basePackages = "com.whatever.repositories.main", mongoTemplateRef = "mongoTemplate")
public class MainMongoConfig {
    ....
}

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