首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当有多个数据库时,如何在MongoRepository中指定使用mongo数据库

当有多个数据库时,如何在MongoRepository中指定使用mongo数据库
EN

Stack Overflow用户
提问于 2019-05-07 14:54:10
回答 2查看 556关注 0票数 1

在我的spring boot应用程序中,我在yml文件中配置了两个数据库。因此,现在我要指定在每个MongoRepository中使用哪个数据库。这个是可能的吗?如果是,该怎么做呢?提前谢谢。

yml文件:

代码语言:javascript
复制
spring:
  data:
mongodb:
first:
  host: 127.0.0.1
  port: 27017
  database: db_admin
      rest:
        base-path: /admin

second:
  host: 127.0.0.1
  port: 27018
  database: `user_forms`
      rest:
        base-path: /users

因此,在用户MongoRepository中,我希望使用user_forms数据库。

用户MongoRepository:

代码语言:javascript
复制
  @RepositoryRestResource(collectionResourceRel = "users",path = "users")
  public interface UserRepository extends MongoRepository<User, String> {

  List<User> findByUserId(String id);

}
EN

回答 2

Stack Overflow用户

发布于 2019-05-08 11:10:47

MongoDB Boot自动配置提供了一个默认的MongoTemplate,以便于生成Spring存储库。

但是,如果要使用多个MongoDB数据库,则需要

Spring为每个

  • 注册MongoTemplates,每个MongoDB相应地将每个MongoTemplates注册到MongoRepositories的基包,以便在生成存储库时通知MongoDB使用正确的模板。

例如,假设您注册了2个MongoTemplates,即templateAdmin和templateUser,它们显式配置为它们的MongoDB。然后,您可以使用这样的代码来通知Spring Data MongoDB哪个存储库使用哪个模板:

代码语言:javascript
复制
@EnableMongoRepositories(
  basePackages = "com.the.base.package.name.of.admin.repositories",
  mongoTemplateRef = "adminTemplateBeanName")
@Configuration
public class AdminMongoConfig {

  @Bean
  public MongoTemplate adminTemplateBeanName() {
    //...
  }
}

Configure Multiple MongoDB repositories with Spring Data Mongo基本上解释了我所说的几乎所有的观点。所以我的猜测是,您可能有一个误解,认为MongoTemplate与MongoRepository无关,但事实并非如此。

票数 0
EN

Stack Overflow用户

发布于 2019-05-08 15:39:31

尽管已经将问题标记为重复,但仍添加了答案,因为MongoRepository是否使用MongoTemplate存在一些混淆。

当您注入MongoRepository时,它由SimpleMongoRepository类的一个实例代理。它有一个字段

代码语言:javascript
复制
private final MongoOperations mongoOperations;

MongoOperations是一个接口,MongoTemplate是它的实现。

现在,问题是这个默认的mongo模板在Spring Boot应用程序中来自哪里。看看MongoDataAutoConfiguration

代码语言:javascript
复制
@Bean
@ConditionalOnMissingBean
public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory,
                                   MongoConverter converter) {
    return new MongoTemplate(mongoDbFactory, converter);
}

因此,我仍然声称它是:Configure Multiple MongoDB repositories with Spring Data Mongo的副本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56017086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档