Spring-Data: укажите, какой MongoTemplate следует использовать MongoRepository
Дана следующая конфигурация:
@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 ответа
Вы должны использовать эту аннотацию в классе конфигурации
@EnableMongoRepositories(
basePackages = {"com.yyy.dao.jpa", "com.xxx.dao.jpa"},
mongoTemplateRef = "MovieTemplate"
)
и настройте это:
- Перечислите все пакеты / классы для сканирования, чтобы найти Монго Дао, который будет включен в эту конфигурацию
- укажите MongoTemplate (имя компонента), который будет использоваться Mongo Dao, сканируемым этой конфигурацией
Поэтому вам нужен класс конфигурации для каждого набора Mongo Dao вместе с соответствующим MongoTemplate.
ПРИМЕЧАНИЕ. Если вы намереваетесь использовать разные клиенты Mongo для каждого шаблона, необходимо убедиться, что соответствующий клиент Mongo передан в MongoTemplate, например, с использованием Qualifier, или другого имени аргумента, которое соответствует имени метода Mongo с объявил @Bean.
Просто наткнулся на этот вопрос: Spring-data-mongodb подключается к нескольким базам данных в одном экземпляре Mongo
Помимо решения этой проблемы управляемая аннотациями spring-data-mongodb(1.3.1.RELEASE), похоже, не предлагает готового решения вообще: /