关闭/移除多租户
ContiNew Admin 从 v4.0.0 版本开始正式集成了多租户能力,这是社区从 1.x 版本起就持续期待的功能。考虑到维护成本和开发精力,我们最终决定放弃多租户与无租户分支并行的方案,改为默认提供多租户能力。
为了满足部分不需要多租户功能的用户需求,本文档将详细介绍如何关闭或移除多租户能力,确保所有用户都能顺利升级和使用最新版本。
注意事项
如果你体验了多租户功能,即初始化过租户模块的 SQL 脚本(默认项目运行时会执行 plugin_tenant.sql
脚本),请务必在关闭或移除租户功能之前,将数据库进行重置。否则在没有租户隔离的情况下,操作数据会出现错误。
问题一: 租户模块的 SQL 脚本初始化会为需要租户隔离的业务表增加 tenant_id
字段,并添加唯一校验。如果不重置数据库表,唯一校验将失效。
问题二: 假设你创建过一个租户管理员 admin,在没有租户隔离的情况下,查询会返回两条admin数据,导致查询结果出错。
快速关闭租户功能(推荐)
如果您只是暂时不需要使用多租户功能,推荐通过简单配置来关闭它,而不是完全移除相关代码。
步骤 1:修改配置文件
在 application.yml
中,将 continew-starter.tenant.enabled
设置为 false
:
# 租户配置
continew-starter.tenant:
enabled: false
步骤 2:修改数据库变更日志
从 db.changelog
目录下的 db.changelog-master.yaml
文件中,注释掉与 plugin_tenant.sql
相关的脚本引用。
步骤 3:前端自动适配
前端会通过后端接口 /system/common/dict/option/tenant
自动获取租户启用状态,无需手动修改前端代码。
通过以上三步简单配置,即可完全关闭多租户功能,系统将以无租户模式运行。
完全移除租户相关代码
如果您确定永远不会使用多租户功能,可以选择完全移除相关代码。
步骤 1:移除租户依赖
从 continew-common/pom.xml
文件中移除租户扩展模块依赖:
<!-- 移除 ContiNew Starter 扩展模块 - 租户 -->
<!-- <dependency>
<groupId>top.continew.starter</groupId>
<artifactId>continew-starter-extension-tenant-mp</artifactId>
</dependency> -->
步骤 2:移除租户配置
从 application.yml
中移除所有租户相关配置:
# 移除租户配置
# continew-starter.tenant:
# ...
步骤 3:移除租户数据库脚本
删除 db.changelog
目录下的 plugin_tenant.sql
脚本文件,并从 db.changelog-master.yaml
中移除对该脚本的引用。
步骤 4:移除租户模块
- 从
continew-plugin
中移除continew-plugin-tenant
模块 - 从
continew-server
的依赖配置中移除continew-plugin-tenant
- 从
continew-common/api
包中删除所有与租户相关的 API 定义 - 编译项目,检查并修复可能出现的其他依赖错误
- 移除前端项目中与租户相关的代码(如
useTenant
等)
注意事项
我们已尽可能将租户相关代码封装在
continew-plugin-tenant
模块中,并通过TenantContextHolder.isTenantEnabled()
方法对所有相关功能进行了条件判断(如有遗漏,欢迎提交 PR)。如需暂时禁用多租户功能,推荐使用「快速关闭」方案,这样可以保留未来启用多租户的可能性。
完全移除租户代码前,请确保您已充分了解系统架构,避免误删关键代码导致系统异常。
移除或修改代码后,请务必进行全面测试,确保系统功能正常。