2015-04-06 97 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