当前位置: 首页 > 知识库问答 >
问题:

Spring-Data:指定MongoRepository应该使用哪个MongoTemplate

竺鸿骞
2023-03-14

给出了以下配置:

@Configuration
public class AppConfiguration {

  @Bean
  Mongo mongo() throws UnknownHostException {
    return new Mongo("localhost");
  }

  @Bean(name = "MovieTemplate")
  MongoTemplate beagleTemplate(Mongo mongo) {
    return new MongoTemplate(mongo, "MovieDatabase");
  }

  @Bean(name = "AnotherTemplate")
  MongoTemplate tmdbTemplate(Mongo mongo) {
    return new MongoTemplate(mongo, "AnotherDatabase");
  }
}

我需要一个存储库来访问电影,看起来有点像这样:

@Repository
public interface MoviesRepository extends
    MongoRepository<ProductPages, String> {

    ... some method declarations to access movies ...
}

是否有一种注释驱动的方法来告诉存储库要使用哪个模板?如果没有,还能做些什么来解决这个问题?

共有2个答案

陈德泽
2023-03-14

刚刚偶然发现了这个问题:Spring data mongodb在一个Mongo实例中连接到多个数据库

除了解决这个问题,注释驱动的spring数据mongodb(1.3.1.RELEASE)似乎根本没有提供现成的解决方案:/

蒯坚白
2023-03-14

必须在配置类上使用此注释

@EnableMongoRepositories(
basePackages = {"com.yyy.dao.jpa", "com.xxx.dao.jpa"},
mongoTemplateRef = "MovieTemplate"
)

然后配置:

  1. 枚举要扫描的所有包/类以查找将包含在此配置中的mongo道
  2. 指定此配置扫描的Mongo道将使用的MongoTemplate(bean name)

因此,您需要为每一组Mongo Dao及其对应的MongoTemplate创建一个配置类。

注意:如果您打算为每个模板使用不同的Mongo客户端,那么必须确保将适当的Mongo客户端bean传递给MongoTemplate,例如使用限定符,或者使用与Mongo的方法名与声明的@bean匹配的不同参数名。

 类似资料:
  • 我试着阅读有关Spring BOM、Spring Boot和Spring IO的文档。 但没有说明,我们应该如何一起使用还是不使用? 在我项目中,我们已经有了自己的父POM,所以我不能将它们用作父POM,但它们都有其他的方法可以使用,如下面定义依赖项管理 您需要Spring BOM、Spring Boot和Spring IO resolve版本 那么它们之间到底有什么区别呢?我更喜欢哪一个?在哪种

  • 问题内容: 在这个问题中,如何在C 11中有效地选择标准库容器?是选择C 集合时要使用的便捷流程图。 我认为对于那些不确定应该使用哪个集合的人来说,这是一个有用的资源,因此我试图找到类似的Java流程图,但未能做到。 哪些资源和“备忘单”可用来帮助人们选择使用Java进行编程时使用的正确Collection?人们如何知道应该使用哪些List,Set和Map实现? 问题答案: 由于找不到相似的流程图

  • 在这个问题中,如何在C 11中有效地选择标准库容器?是选择C集合时使用的方便流程图。 我认为对于那些不确定应该使用哪个集合的人来说,这是一个有用的资源,所以我试图找到一个类似的Java流程图,但没能做到。 有哪些资源和“备忘单”可以帮助人们在用Java编程时选择正确的集合?人们如何知道他们应该使用什么列表、集合和映射实现?

  • 我使用Spring Boot和Spring Data MongoDB与底层分片MongoDB集群进行接口。我的Spring Boot应用程序通过路由器访问集群。 使用Spring Data MongoDB,可以通过指定对象持久化到的集合,或者默认为类名(第一个字母小写)。这些藏品不需要预先存在;它们可以在运行时创建。 要在MongoDB中分片集合,您需要 1-在数据库上启用分片: 2-在分片数据库

  • 问题内容: 有两个progid。我看过都用过。 任何人都对我何时应该使用一个相对于另一个使用有任何见解? 问题答案: 海志es 看看这些 http://bytes.com/topic/javascript/answers/559991-msxml-xmlhttp-vs-microsoft- xmlhttp http://forums.asp.net/p/1000060/1622845.aspx

  • 我正在使用Google App Engine灵活地部署我的Spring Boot应用程序。我看到配置可以由app.yaml或appengine-web.xml指定。不过,我的问题是, 我应该为Spring Boot应用程序使用哪个配置文件,yaml还是XML? 如果是xml,我是否应该创建web/web-inf/folder并将appengine-web.xml放置在其中? 另外,如果xml,如何