给出以下配置:
@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集及其相应的MongoTemplate提供一个配置类。
注意:如果您打算为每个模板使用不同的Mongo客户端,则必须确保将适当的Mongo客户端bean传递给MongoTemplate,例如使用Qualifier或与Mongo的方法名称匹配的其他自变量名称。声明为@Bean。