繁体   English   中英

多租户与春季启动

[英]Multi tenancy with Spring boot

我打算在多租户应用程序上工作,现在我只是在Web上查看不同的实现,以了解实现此类任务所需的要求。 Hibernate + Spring启动是我计划使用的技术。

从我的阅读中,所有不同的教程都使用相同的方法,即在配置文件中声明数据源,以便在应用程序启动时启动会话工厂,但我真的想拥有更高级别的应用程序,我可以动态添加租户并输入他们的数据源信息。 这样,应用程序可以获取新租户的信息,而无需触摸配置文件并重新启动应用程序。

我想有一个单独的数据库,我可以存储我的租户数据源凭据或类似的东西。 你能给我另一种方法来解决这个要求或者我可以参考的现有实现的链接。

谢谢

我过去也有类似的要求。

我实现了DataSource代理类。 该类具有租户解析器和简单DataSource的映射。 我们需要DataSource的所有地方都使用代理。

在任何方法调用例如getConnection()它解析租户,检查映射是否包含已创建的DataSource(如果没有为租户创建新的DataSource并存储在DB中)。 然后调用来自地图的相同的真实DataSource方法。

租户解析器是基于ThreadLocal的,其中租户值存储在过滤器中(从请求标头获取租户)并在DataSource代理中使用。

您需要做的是通过AbstractRoutingDataSource使用Spring Framweork的动态数据源路由。 这个答案为您解释了一切。

在我的问题中 。我实现了MultiTenantConnectionProviderCurrentTenantIdentifierResolver 。并使用DataSourceLookup来按租户选择数据源。这个链接对我有帮助。

这是一个完整的工作示例,我使用Spring Boot 2,Spring JPA(Hibernate),在MySQL上运行的Spring Security 5构建的数据库/租户多租户应用程序。

我已经解释了它是如何工作的并且也分享了整个代码。

看看这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM