因此,经过大量研究和实验,我得出的结论是,当前
spring-data-mongodb项目尚不可能做到这一点。我在上面尝试了baja的方法,遇到了一个特殊的障碍。在
MongoTemplate运行其
ensureIndexes()从它的构造函数中的方法。此方法调出数据库以确保数据库中存在带注释的索引。启动时
MongoTemplate会调用for的构造函数,
Spring因此我什至没有机会设置
ThreadLocal变量。我必须在
Spring启动时已经设置好默认值,然后在请求进入时进行更改。这是不允许的,因为我既不需要也不拥有默认数据库。
虽然一切都没有丢失。我们最初的计划是让每个客户端都在其自己的应用程序服务器上运行,并指向服务器上自己的
MongoDB数据库
MongoDB。然后,我们可以提供一个
-Dprovider=系统变量,并且每个服务器仅指向一个数据库运行。
我们被指示要有一个多租户应用程序,因此尝试使用该
ThreadLocal变量。但是由于它不起作用,因此我们能够按照最初设计的方式运行该应用程序。
我相信,虽然有一种方法可以使所有这些工作正常进行,但所需的时间比其他帖子中所述的更多。你必须自己做
RepositoryFactoryBean。这是Spring
Data MongoDB参考文档中的示例。您仍然需要自己实现
MongoTemplate并延迟或删除
ensureIndexes()呼叫。但是,您将不得不重写一些类以确保
MongoTemplate调用了而不是
Spring's。换句话说,很多工作。我没有时间去做,甚至想做的工作。
感谢您的答复。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)