簡體   English   中英

Spring-Data:指定MongoRepository應該使用哪個MongoTemplate

[英]Spring-Data: specify which MongoTemplate a MongoRepository should use

給出以下配置:

@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 ...
}

有注釋驅動的方式來告訴存儲庫使用哪個模板嗎? 如果沒有,還有什么可以解決的?

您必須在Configuration類上使用此注釋

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

並配置此:

  1. 枚舉要掃描的所有軟件包/類以查找將包含在此配置中的mongo dao
  2. 指定此配置掃​​描的Mongo Dao將使用的MongoTemplate(bean名稱)

因此,您需要為每個Mongo Dao集及其相應的MongoTemplate提供一個配置類。

注意:如果您打算為每個模板使用不同的Mongo客戶端,則必須確保將適當的Mongo客戶端bean傳遞給MongoTemplate,例如使用Qualifier或與Mongo的方法名稱匹配的其他參數名稱。聲明為@Bean。

只是偶然發現了這個問題: Spring-data-mongodb在一個Mongo實例中連接到多個數據庫

除了解決這個問題,注解驅動的spring-data-mongodb(1.3.1.RELEASE)似乎根本沒有提供現成的解決方案:/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM