当前位置: 首页 > 知识库问答 >
问题:

Spring多租户-无需重新启动即可添加新租户(使用AbstractRoutingDataSource)

步弘和
2023-03-14

我正在使用Spring实现一个多租户系统,每个租户都有自己的数据库。我把一切都准备好了。

我扩展了“AbstractRoutingDataSource”并覆盖了“determineCurrentLookupKey”,以确定通过用户域/租约使用哪个连接。

"AbstractRoutingDataSource"将在应用程序加载并在其中设置所有可能的数据库连接时实例化。

这是我的问题-

有没有办法向AbstractRoutingDataSource动态添加额外的连接?我希望能够在不重新启动的情况下添加其他租户。

任何帮助都将不胜感激

谢啦

共有2个答案

齐永昌
2023-03-14

是的,你可以这样做,这里是一个完整的项目,它很好地解释了你的需求:多租户:使用Spring Data JPA管理多个数据源

汝吕恭
2023-03-14

我来不及写这篇文章了,但最近我需要构建一个Saas风格的多租户web应用程序。租户需要动态添加,而无需重新启动服务器。所以我在这里用一个完整的工作示例分享了我的经验。

 类似资料:
  • 为了租户间相互独立,我们需要把 TenantId 字段添加到所有表中。 因此,我们先添加一个租户(Tenants)表。 因为 Northwind 表已经有记录,我们将定义一个 ID 为 1 的主租户,并把所有现有记录的 TenantId 设为该值。 现在是时候写迁移类,实际上有两个迁移类:一个是 Northwind ,另一个是 Default 数据库。 DefaultDB_20160110_092

  • 目前为止,我们已经让用户页面在多租户风格下工作。为使它工作,我们看起来并没有做太多的变化。但请记住,我们正在对一个原来不是多租户的系统作修改。 让我们在 Roles 表应用类似的原则。 再一次,一个租户的用户在不能查看或修改其他租户的角色,每个租户的用户是相互独立工作的。 我们先在 RoleRow.cs 添加 TenantId 属性: namespace MultiTenancy.Administ

  • 我们正面临着解决这个问题的艰难时刻!我们正在尝试在不使用默认租户的情况下为Spring Boot服务使用MTA。这意味着当当前上下文中没有租户时,我们希望从我们的CurrentTenantIdentifierResolver实现返回null。这在我们用JavaEE+Hibernate+Deltaspike数据构建的其他服务中运行良好,但在Spring服务启动时失败。 异常消息如下:“由:org.h

  • 当我们使用 Tenant2 登录系统,并尝试创建一个新用户 User2。 你不会收到任何错误,但令人惊讶的是,你不能在列表中看到新创建的用户, User2 发生了什么? 由于我们在迁移类中,把 TenantId 的值设置为 1,现在 User2 的 TenantId 也是 1,并且它也是 主租客。 我们需要在已登录的用户中把新用户的 TenantId 设置为同样的值。 修改 UserReposit

  • 问题内容: 在Spring 3应用程序中,我试图通过Hibernate 4的本机MultiTenantConnectionProvider和CurrentTenantIdentifierResolver实现多租户。我发现在Hibernate 4.1.3 中存在此问题,但是我正在运行4.1.9并仍收到类似的异常: 以下是相关代码。在I中,我现在只写了一些简单的代码,每次都只返回一个新的连接,并且在这

  • 问题内容: Tl; dr:有没有方法可以覆盖默认行为? 在我的django项目中,我有很多网址,例如 允许使用以下网址 这样,我便可以使用自定义中间件来修改请求,以包括基于使用我的网站的公司的一些特定详细信息 这一切工作正常,除了当Django试图破译与完整路径和… 它似乎作为正则表达式的默认匹配返回。由于该方法具有用于映射到的转义映射 该标签我已经能够覆盖更换正确的公司名称,我想知道是否有类似的