java – 制作spring-data-mongodb多租户
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 制作spring-data-mongodb多租户,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1502字,纯文字阅读大概需要3分钟。
内容图文
![java – 制作spring-data-mongodb多租户](/upload/InfoBanner/zyjiaocheng/890/e63b78b7dbc44353872a1ec22830a9d9.jpg)
在post去年8月sbzoom提出了一个制作spring-data-mongoDB多租户的解决方案:
“你必须创建自己的RepositoryFactoryBean.这是Spring Data MongoDB Reference Docs中的示例.你仍然需要实现自己的MongoTemplate并延迟或删除ensureIndexes()调用.但你必须重写几个类来确保你的MongoTemplate被称为而不是春天.“
有没有人实现这个或类似的东西?
解决方法:
有很多方法可以让猫在这里去皮.它基本上归结为您希望应用租赁的级别.
基本
基本方法是在每个线程的基础上绑定某种识别客户的密钥,以便您可以了解当前执行线程所处理的客户.这通常通过使用一些身份验证相关信息填充ThreadLocal来实现,因为您通常可以从登录用户派生租户.
现在,如果有的话,可以选择应用租户知识.让我简要概述最常见的一些:
数据库级别的多租户
为多个客户端分隔数据的一种方法是为每个租户分配单独的数据库. Spring Data MongoDB的核心抽象是MongoDBFactory接口.这里最简单的方法是覆盖SimpleMongoDbFactory.getDb(String name)并使用数据库名称调用父方法,例如由租户前缀等丰富.
收集级别的多租户
另一种选择是租户特定的集合,例如通过租户前后或后缀.实际上可以通过在@Document注释的collectionName属性中使用Spring Expression语言(SpEl)来利用此机制.首先,通过Spring bean公开租户前缀:
@Component("tenantProvider")
public class TenantProvider {
public String getTenantId() {
// … implement ThreadLocal lookup here
}
}
然后在您的域类型@Document映射中使用SpEL:
@Document(collectionName = "#{tenantProvider.getTenantId()}_accounts"
public class Account { … }
SpEl允许您按名称引用Spring bean并对它们执行方法. MongoTemplate(以及传输的存储库抽象)将使用文档类的映射元数据,映射子系统将评估collectionName属性以找出要与之交互的集合.
内容总结
以上是互联网集市为您收集整理的java – 制作spring-data-mongodb多租户全部内容,希望文章能够帮你解决java – 制作spring-data-mongodb多租户所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。