Java 带弹簧靴的多租户
我正计划开发一个多租户应用程序,目前我正在研究web上的不同实现,以了解实现此类任务所需的需求。 Hibernate+Spring引导是我计划使用的技术 从我的阅读资料来看,所有不同的教程都使用相同的方法,即在配置文件中声明数据源,以便在应用程序启动时启动会话工厂,但我确实希望应用程序具有更高的级别,在这里我可以动态添加租户并输入其数据源信息。 这样,应用程序就可以获得新租户的信息,而无需触摸配置文件并重新启动应用程序 我考虑建立一个单独的数据库,在那里我可以存储租户的数据源凭据或类似的东西。你能给我另一种方法来解决这个需求吗?或者给我一个我可以参考的现有实现的链接Java 带弹簧靴的多租户,java,spring,hibernate,spring-boot,multi-tenant,Java,Spring,Hibernate,Spring Boot,Multi Tenant,我正计划开发一个多租户应用程序,目前我正在研究web上的不同实现,以了解实现此类任务所需的需求。 Hibernate+Spring引导是我计划使用的技术 从我的阅读资料来看,所有不同的教程都使用相同的方法,即在配置文件中声明数据源,以便在应用程序启动时启动会话工厂,但我确实希望应用程序具有更高的级别,在这里我可以动态添加租户并输入其数据源信息。 这样,应用程序就可以获得新租户的信息,而无需触摸配置文件并重新启动应用程序 我考虑建立一个单独的数据库,在那里我可以存储租户的数据源凭据或类似的东西。你
谢谢我过去也有类似的要求 我实现了DataSource代理类。该类具有租户解析器和简单数据源的映射。所有需要数据源的地方都使用代理 在解析租户的任何方法调用(例如getConnection())上,检查映射是否包含已创建的数据源(如果不是,则为租户创建新数据源并存储在数据库中)。然后调用来自映射的真实数据源的相同方法
租户解析程序是基于ThreadLocal的,租户值存储在筛选器中(从请求头获取租户)并在数据源代理中使用。您需要做的是通过
AbstractRoutingDataSource使用Spring Framweork的动态数据源路由。为您解释所有内容。在我的中。我实现了MultiTenantConnectionProvider
和CurrentTenantIdentifierResolver
。并使用DataSourceLookup按租户选择数据源。这对我很有帮助。下面是我使用Spring Boot 2、Spring JPA(Hibernate)构建的每个租户多租户数据库应用程序的完整工作示例,在MySQL上运行的SpringSecurity5
我已经解释了它是如何工作的,并且也分享了整个代码
看一看