多租户与春季启动

时间:2017-06-15 08:49:46

标签: java spring hibernate spring-boot multi-tenant

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

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

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

由于

4 个答案:

答案 0 :(得分:2)

我过去也有类似的要求。

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

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

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

答案 1 :(得分:1)

您需要做的是通过AbstractRoutingDataSource使用Spring Framweork的动态数据源路由。 This answer为您解释一切。

答案 2 :(得分:1)

在我的getting json data from header see image。我实现了MultiTenantConnectionProviderCurrentTenantIdentifierResolver。并使用DataSourceLookup按租户选择数据源。这个question对我有帮助。

答案 3 :(得分:0)

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

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

看看here