2017-06-15 114 views
0

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

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

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

谢谢

回答

1

我在过去有类似的要求。

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

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

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

1

你需要做的是通过AbstractRoutingDataSource使用Spring Framweork的动态数据源路由。 This answer为您解释所有问题。

1

在我question。我实现了MultiTenantConnectionProviderCurrentTenantIdentifierResolver。而使用DataSourceLookup选择数据源通过tenant.This links对我很有用处。