给出以下配置:

@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"
)

并配置此:
  • 枚举要扫描以查找将包含在此配置中的mongo dao的所有软件包/类
  • 指定将由此配置扫描的Mongo Dao使用的MongoTemplate(bean名称)

    因此,您需要为每个Mongo Dao集及其相应的MongoTemplate提供一个配置类。

    注意:如果您打算为每个模板使用不同的Mongo客户端,则必须确保将适当的Mongo客户端bean传递给MongoTemplate,例如使用Qualifier或与Mongo的方法名称匹配的其他自变量名称。声明为@Bean。

  • 10-07 22:56