2015-04-06 2 views
0

У меня есть случай, когда мне нужно переключиться между базами данных mongo с помощью Spring mongodata (Версия: 1.6.2). В настоящее время у меня есть база данных по умолчанию, настроенная в db-config.xml с шаблоном mongo, и есть аннотированные репозитории; Необходимо переключиться с одного db/шаблона на другой во время выполнения; выполните необходимые действия и вернитесь к умолчанию. я упомянул пару ссылок, Spring-data-mongodb connect to multiple databases in one Mongo instance и Making spring-data-mongodb multi-tenant Мне нужно использовать тот же набор репозиториев во время выполнения. Можно ли обрабатывать мой случай на уровне конфигурации? или нам нужно расширить Dbfactory для достижения этого? с Dbfactory, могу ли я использовать тот же набор аннотированных репозиториев?Переключение между базами данных Spring MongoDb

Цените любую помощь.

ответ

1

Вы можете расширить:

1. `SimpleMongoDbFactory`: returning custom DB in DB `getDb(String dbName)`. 

    2. `MongoTemplate`: Supplying above factory. 

Используйте соответствующую MongoTemplate с помощью @Qualifier.

+0

Спасибо Amit. Я проверю это. –

+0

Amdalal. Не могли бы вы дать нам больше информации о том, как использовать другой шаблон mongo для одного и того же репозитория. – devanathan

+0

проверить это https://gist.github.com/amdalal/bc5e573762cc45a6da14a3fbc723d8c0 – amdalal

0

У меня когда-то была очень похожая проблема. Я опубликовал код на github, проверьте его multi-tenant-spring-mongodb

Вы в основном должны продлить SimpleMongoDbFactory и обрабатывать другие хосты тоже. Я просто обрабатывал несколько баз данных на одном сервере. Это не должно быть проблемой.

+0

Спасибо за ответ. Согласно вашему коду, я понимаю, мы можем установить шаблон mongo только один раз. Я попытался подключиться к разным dbs на одном сервере, это работает нормально. Но, в моем случае, базы данных находятся в разных серверах. Возможно ли динамически подключаться к db на разных серверах? –

+0

Я обновил свой ответ – Zarathustra

+0

это разрешено? Я не смог обновить базу данных во время выполнения. context.getBean (SimpleMongoDbFactory.class) .getDb («Тест»); Но он не работал, спасибо заранее. – devanathan

 Смежные вопросы

  • Нет связанных вопросов^_^