Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带弹簧靴的多租户_Java_Spring_Hibernate_Spring Boot_Multi Tenant - Fatal编程技术网

Java 带弹簧靴的多租户

Java 带弹簧靴的多租户,java,spring,hibernate,spring-boot,multi-tenant,Java,Spring,Hibernate,Spring Boot,Multi Tenant,我正计划开发一个多租户应用程序,目前我正在研究web上的不同实现,以了解实现此类任务所需的需求。 Hibernate+Spring引导是我计划使用的技术 从我的阅读资料来看,所有不同的教程都使用相同的方法,即在配置文件中声明数据源,以便在应用程序启动时启动会话工厂,但我确实希望应用程序具有更高的级别,在这里我可以动态添加租户并输入其数据源信息。 这样,应用程序就可以获得新租户的信息,而无需触摸配置文件并重新启动应用程序 我考虑建立一个单独的数据库,在那里我可以存储租户的数据源凭据或类似的东西。你

我正计划开发一个多租户应用程序,目前我正在研究web上的不同实现,以了解实现此类任务所需的需求。 Hibernate+Spring引导是我计划使用的技术

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

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


谢谢

我过去也有类似的要求

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

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


租户解析程序是基于ThreadLocal的,租户值存储在筛选器中(从请求头获取租户)并在数据源代理中使用。

您需要做的是通过
AbstractRoutingDataSource使用Spring Framweork的动态数据源路由。为您解释所有内容。

在我的中。我实现了
MultiTenantConnectionProvider
CurrentTenantIdentifierResolver
。并使用DataSourceLookup按租户选择数据源。这对我很有帮助。

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

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

看一看