2015-04-06 145 views
0

我有一種情況,我需要在使用Spring mongodata(版本:1.6.2)的mongo數據庫之間切換。目前,我使用mongo模板在db-config.xml中配置了默認數據庫,並且擁有帶註釋的存儲庫;需要在運行時從一個數據庫/模板切換到另一個數據庫/模板;執行必要的操作並切換回默認值。 我提到的幾個鏈接, Spring-data-mongodb connect to multiple databases in one Mongo instanceMaking 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

謝謝阿米特。我會檢查這一點。 –

+0

Amdalal,您能否給我們提供更多信息,如何在同一個存儲庫中使用不同的mongo模板。 – devanathan

+0

檢查此https://gist.github.com/amdalal/bc5e573762cc45a6da14a3fbc723d8c0 – amdalal

0

我曾經有過一個非常類似的問題。 我發表在GitHub上的代碼,檢查出來multi-tenant-spring-mongodb

基本上,你不得不延長SimpleMongoDbFactory太處理其他主機。我只是在同一臺服務器上處理多個數據庫。這應該不成問題。

+0

感謝您的回覆。根據你的代碼,我明白,我們可以只設置一次mongo模板。我嘗試連接到同一臺服務器上的不同dbs,這工作正常。但是,就我而言,數據庫位於不同的服務器盒中。是否有可能動態地連接到不同服務器上的數據庫? –

+0

我更新了我的回答 – Zarathustra

+0

這個問題解決了嗎?我無法在運行時更新數據庫。 context.getBean(SimpleMongoDbFactory.class).getDb(「Test」); 但它不工作,提前致謝。 – devanathan