给出以下配置:
@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 ...
}
是否有注释驱动方式告诉存储库使用哪个模板? 如果没有,还有什么办法可以解决这个问题?
答案 0 :(得分:2)
您必须在Configuration类
上使用此批注@EnableMongoRepositories(
basePackages = {"com.yyy.dao.jpa", "com.xxx.dao.jpa"},
mongoTemplateRef = "MovieTemplate"
)
并配置:
所以你需要为每一组Mongo Dao及其相应的MongoTemplate配置一个配置类。
注意:如果您打算为每个模板使用不同的Mongo客户端,那么您必须确保将相应的Mongo客户端bean传递给MongoTemplate,例如使用限定符或与Mongo匹配的其他参数名称。声明为@Bean的方法名称。
答案 1 :(得分:0)
偶然发现了这个问题:Spring-data-mongodb connect to multiple databases in one Mongo instance
除了解决这个问题之外,注释驱动的spring-data-mongodb(1.3.1.RELEASE)似乎根本没有提供开箱即用的解决方案:/