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

и настройте это:

  1. Перечислите все пакеты / классы для сканирования, чтобы найти Монго Дао, который будет включен в эту конфигурацию
  2. укажите MongoTemplate (имя компонента), который будет использоваться Mongo Dao, сканируемым этой конфигурацией

Поэтому вам нужен класс конфигурации для каждого набора Mongo Dao вместе с соответствующим MongoTemplate.

ПРИМЕЧАНИЕ. Если вы намереваетесь использовать разные клиенты Mongo для каждого шаблона, необходимо убедиться, что соответствующий клиент Mongo передан в MongoTemplate, например, с использованием Qualifier, или другого имени аргумента, которое соответствует имени метода Mongo с объявил @Bean.

Просто наткнулся на этот вопрос: Spring-data-mongodb подключается к нескольким базам данных в одном экземпляре Mongo

Помимо решения этой проблемы управляемая аннотациями spring-data-mongodb(1.3.1.RELEASE), похоже, не предлагает готового решения вообще: /

Другие вопросы по тегам