【JeecgBoot】关于 jeecg-boot 的项目理解、使用心得和改进建议

工欲善其事,必先利其器。

脚手架选型

一年前,我接到为团队落地一个快速开发脚手架的任务。

在月底这节骨眼上,时间紧,任务急,有想自己撸一个脚手架的人都赶紧把这想法收起来吧!这劳民又伤身的事咱肯定是不能干的!

于是,我将目光放在了 Gitee Star比较靠前的开源项目上,这是当时调研的数据 Java Web 开发脚手架调研。

其中MCMS、lenosp、bootdo等项目,我们甚至已经有过项目落地经验,但最终我们还是选择了jeecg-boot,选择它的理由我们有这几点:

前后分离架构

当时我们正在推前端工程化,前后分离的工作模式是我们团队的趋势

热门技术栈

后端同学使用 Spring Boot + Mybatis Plus,能更专注理解需求与业务逻辑

前端同学使用Vue + Ant Design Vue,既能快速开发业务,还有时间对页面性能优化做研究

设计同学使用Ant Design组件库设计资源,统一了设计风格

基于角色的访问控制体系

符合公司当前业务场景

完善的开发文档

开发文档清晰且详细,有经验的同学肯定知道维护一份完善的开发文档往往比写这个项目花费的时间和精力还要多。

除了文档,社区还提供了视频教学,真的是贴心到了极致

活跃的社区生态

github issue 1300+

jeecg开源社区会员20000+

活跃的社群交流

正是基于这些点,我们选择相信 jeecg-boot!

经过一年多,我们见证了 jeecg-boot 在 github 从 star 2000+ 到现在的 star 14.7k,

而我们团队也已经有 5 个服务是基于 jeecg-boot 2.0.0 进行开发,并有 4 个服务已投入生产使用。

改进建议

后端

关于分层领域模型

【建议】将 分层领域模型 落地

相比我们使用的 2.0.0 版本,jeecg-boot 2.2.1 在功能上已经非常完善,且已经形成了稳定的代码风格,在代码分层的工作上也细化了很多。

但是,在分层领域模型方面,始终是使用Entity贯穿各层,如果能将分层领域模型落地,jeecg-boot 一定会更加优秀。

我们在分层领域模型规约的一些实践: 遵循 JAVA开发手册

# 对象模型

Model (接口入参 表单验证 swagger注解)

VO (返回页面对象) View Object

BO (业务层对象)

DO (数据库返回结果集)

DTO (远程调用传输对象)

实体类 (与数据表一一对应)

# 接口入参接收对象:XXXModel

【推荐】不包含`id、updateBy、updateTime、createBy、createTime`等属性,通过sql拦截注入这一系列字段

【推荐】必传字段校验

【推荐】字段长度校验

【推荐】格式校验

【推荐】时间格式转换 `@DateTimeFormat` (入参格式化,将字符串时间格式化为Date对象)

# 接口返回值:XXXVO

【强制】不包含敏感字段(手机号、密码、邮箱、身份证号)

【强制】包含敏感字段时对数据加密

【推荐】使用`@JsonView`注解控制返回值的字段可见性

【推荐】字典字段转换 如,`@Dict(dicCode = "sex")`

【推荐】时间格式转换 `@JsonFormat` (出参格式化,将Date对