【问题标题】:Spring Multi-Tenancy - Adding new tenant without restart (using AbstractRoutingDataSource)Spring Multi-Tenancy - 添加新租户而不重新启动(使用 AbstractRoutingDataSource)
【发布时间】:2016-07-28 16:25:48
【问题描述】:

我正在使用 Spring 实现一个多租户系统,其中每个租户都有自己的数据库。我已经启动并运行了一切。

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

“AbstractRoutingDataSource”在应用加载并在此处设置所有可能的数据库连接时被实例化。

这是我的问题-

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

任何帮助将不胜感激

谢谢

【问题讨论】:

  • 不适用于AbstractRoutingDataSource。我们在大约 10 年前使用/开发了this,在生产中仍然像魅力一样工作。它实际上比只是一个数据源更灵活(我们将它用于消息传递、主题、属性等)。
  • 感谢@M.Deinum,这比我想象的要简单得多。 AbstractRoutingDataSource 类给了我一个曲线球。按照您的示例,我已经设法使用 AbstractDataSource 类启动并运行。再次感谢!

标签: java spring dynamic spring-data multi-tenant


【解决方案1】:

我来这个帖子太晚了,但最近我需要构建一个 Saas 风格的多租户 Web 应用程序。需要动态添加租户,而不需要重新启动服务器。所以我用一个完整的工作示例分享了我的学习here。

【讨论】:

  • 看了你的博文,受益匪浅,但我想知道实现 AbstractRoutingDataSource 和实现2个hibernate接口有什么区别?
  • @ehabrefaat AbstractRoutingDataSource 在 Spring 中已经存在很长时间了。请检查此link。 CurrentTenantIdentifierResolver 是 Hibernate feature,我使用它,因为 Spring JPA 默认使用 HIbernate。
【解决方案2】:

是的,您可以这样做,这是完整的项目,它很好地解释了您的要求: Multi-tenancy: Managing multiple datasources with Spring Data JPA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2013-11-18
    相关资源
    最近更新 更多