JeecgBoot简介JeecgBoot是一个基于代码生成器的低代码开发平台,零代码开发!前端采用AntDesign&Vue,后端集成SpringBoot2.x、Mybatis-plus,安全框架为Shiro和JWT。与其他开源项目相比,在线配置表单、在线配置报告、在线图表设计、在线设计流程、在线设计表单等功能非常出色,大大提高了开发效率。此外,jeecg-boot具有强大的代码生成逻辑。相对于其他开源框架,jeecg-boot的代码生成可以用来开发更复杂的联表查询,而不是只能实现单表查询的简单逻辑。jeecg-boot使用心得第一次使用JeecgBoot,感觉配置比较简单,数据库和redis的简单配置,一键启动项目,项目部署的详细说明(war包部署,jarpackagedeployment,dockerdeployment等)文档、项目运行、部署基本没有问题;数据库方面,表名更加规范,每张表有五个字段:del_flag、create_time、create_by、update_time、update_by,全方位记录表的数据迁移;JeecgBoot项目监控比较完善,包括路由网关监控、定时任务监控、redis监控、日志监控、数据日志监控、性能监控、SQL监控等,可以实时展示项目状态,提前预测项目宕机风险,完善项目运作。维级;JeecgBoot有一个很好的细节,就是系统通知系统使用了management-system通知接口。添加系统通知时,编辑通知的具体内容可以格式化通知内容,方便公司使用。要正式;JeecgBoot集成了多租户模式。我们都知道多租户有三种实现模式。一是基于tenant_id隔离数据,二是基于Schema隔离数据(oracle支持较好),三是独立数据库隔离(安全性最高);JeecgBoot采用最难开发但占用资源最少的tenant_id模式隔离。具体实现过程是登录后查询用户的tenant_id,将这个tenant_id放到前端vuex状态树中,这样每次访问后端接口都自带一个tenant_id,前端在访问后端时,后端获取tenant_id注入ThreadLocal,然后配置Mybatisplus分页插件。每次查询都自带从ThreadLocal中取出来的tenant_id,实现多租户数据隔离;开发新功能时,需要注意的是,需要多租户模式的表一定要加上tenant_id字段,记得为不需要多租户数据隔离的表或SQL配置tenantTable排除项;改进建议:JeecgBoot配置项比较复杂,比较眼花缭乱,导致萌新启动困难。解决方案:减少配置项,只保留最基本的配置,其他的扩展功能,比如启用短信,启用对象存储等,都写在文档中,让用户可以多看文档,然后提交问题或提问群内提问,减少开发人员的工作量。它还使项目“轻量级”;我注意到JeecgBoot的一些表使用的是文本数据格式,比如log表的sys_data_logdata_content字段,但存储时数据长度没有限制。这里有一个风险。当我们有一些异常数据时,文本格式会不适应,这不仅会造成宕机的风险,还会降低服务器性能;JeecgBoot使用逻辑删除自己没有问题,但是逻辑删除会和现有逻辑冲突。比如已有的用户张三,我删除了用户张三,但是因为某些原因需要添加用户张三,那么添加的时候会提示用户名称已经存在。我认为这是潜在的墓碑错误。解决方案:放弃逻辑删除,新建备份表,将删除的数据复制到备份表中,避免了一些代码逻辑冲突,节省了数据;不放弃逻辑删除,在逻辑删除表中添加一个基于时间戳的唯一字段,判断是否重复时可以查询该字段;JeecgBoot具有完善的监控功能,但缺少报警功能。我在本地开发的时候,因为我的电脑硬盘比较小,磁盘占用率达到了90%,但是监控没有任何告警,这样如果是生产环境,就有宕机的风险;另外,监控比较机械,比如redis的监控,没有突出我们比较重要的性能指标,即instantaneous_ops_per_sec(平均每秒处理的总请求数),rejected_connections(达到max_client再限制的连接数),并且不计算缓存命中率等;解决方案:专业的事情交给专业的人,建议集成prometheus,配合grafana做监控功能,使用已有的grafana模板或者开发jeecgboot专用监控模板,图形化展示监控指标和配置告警,完善项目的自动化运维程度。多租户建议:实现租户模式配置,即配置用户多租户模式,0无租户模式,1基于tenant_id隔离,2基于Schema隔离,3独立数据库模式;tenant_id隔离模式需要开发多租户开关,当用户关闭多租户时,前后端强制tenant_id设置为1;Schema隔离模式最简单的方式就是设置Schema名称有租户名称;独立数据库模式基于多数据源,租户使用不同的数据源(不与主备数据源冲突)。另外租户管理中新增租户的逻辑过于简单。添加租户后需要为租户初始化必要的数据,如初始化管理员账号、基本角色、职位、部门、数据字典等;关于redis的一点建议JeecgBoot将缓存放在redis中,但是没有缓存淘汰策略。场景太多会造成资源浪费,建议开启redis缓存淘汰策略或者自己写一个LRU算法
