使用Spring Boot构建多租户应用程序



我正在使用spring boot开发一个多租户应用程序。

系统的业务逻辑将在每个租户的基础上发生变化。

例如,应用程序上租赁空间的特定租户可能希望使用一些复杂的自定义逻辑来更改计算值的方式。我想为应用程序注册一个默认行为/依赖项,并允许特定租户覆盖它

这可以使用Spring Boot完成吗?

这个问题很模糊。但我试图提供一些建议。似乎有两个不同的问题需要解决:

  1. 您需要拥有业务逻辑的可动态加载部分。这些部分需要来自租户特定的存储,如文件系统或数据库。一种简单的方法可以是Java ScriptEngine,它可以加载计算/逻辑脚本并执行它。一种更全面的方法是业务规则引擎。有几个,有些与spring集成,你可以在谷歌上查找资源。

  2. 您需要有租户意识的数据访问,很可能是数据库访问。这包括

    • 按租户区分数据,例如,每个租户使用一个单独的数据库(方案(,或每个表中存储租户标识符的列。Spring并不直接支持这一点,但底层技术(例如JPA实现(可能会支持。我的公司在MongoDB内部实现了类似的s.th,并不像听起来那么难
    • 一种确定动作属于哪个租户的方法。对于web/webservice应用程序,租户通常作为主机名、URL路径或自定义HTTP标头的一部分提供。有一个为Servlet 4.0标准化这一点的计划,但据我所知,它最终没有进入规范。所以你可以自己操作,但实现起来并不难

总结一下:Spring(Boot(对它没有直接帮助,但有了上面的指针,你可以在使用Spring Boot的同时开始研究自己实现它。

看看这个:

https://github.com/singram/spring-boot-multitenant

我认为如果你使用的是springboot,它可能是一个网络应用程序。因此,使用http/header携带租户ID,您可以使用不同的数据源。

从逻辑上讲,您可以通过头/体/url 中的RestController地址或租户ID来区分租户

相关内容

最新更新