【发布时间】:2016-09-03 00:16:51
【问题描述】:
我正在尝试创建一个多租户 Web 应用程序,并找到了一个很好的教程 here。这向我解释了如何配置 MVC 以查找新租户(使用 CurrentTenantIdentifierResolver
和扩展 HandlerInterceptorAdapter
的 MultiTenancyInterceptor),如何为三个不同的租户配置三个不同的数据源,以及如何为服务器提供正确的数据源运行时通过扩展AbstractDataSourceBasedMultiTenantConnectionProviderImpl
现在,这是一个很好的起点,让我了解 spring 和 hibernate 中的多租户如何工作,但我想进一步推动这一点,我想让租户完全动态,即我不要假设一个应用程序可以有多少租户。
这是我的想法:
- 应用程序配置为在启动时扫描路径(不在类路径中,例如 /usr/data/config),并在各种目录(每个租户一个目录)下查找各种 application.properties 文件,例如租户A、租户B、租户C...
- 对于每个 application.properties,Spring Boot 将基于该文件创建一个数据源(该文件将只有启动属性 spring.datasource.url)。请注意,使用 Spring Boot 的属性会很棒,因为它为我提供了来自单个 URL 所需的所有信息,例如 JDBC 类等。
- 我将在 HashMap 中注册每个数据源(如上一个链接所示)
之后,基本的多租户结构已经在前面的链接中描述:每次最终用户向浏览器发出请求时,服务器都会详细说明租户并返回正确的数据源以查找要使用的数据库.
任何人都可以向我指出一些资源,如果这是以前做过的(我用谷歌搜索了很多,但没有什么能让我开始),或者就使用哪些 spring 类/配置来实现这一点提供一些建议?
提前致谢
【问题讨论】:
标签: java hibernate spring-data-jpa multi-tenant