1、基础开发框架
1.1 什么是基础开发框架?
基础框架可以理解为建立一个项目所需的基础框架,这个基础框架为凝聚了之前开发项目的通用、共性的方法、工具、技术等组成的代码包。
现有我们公司有两类基础框架:
(1)基于web应用的基础框架
(2)基于数据迁移场景的基础框架
大家可根据具体的实际场景制定试用自己的基础框架。
1.2 为什么需要基础框架?
做开发的同事可能都知道,每次研究一项新技术含定时任务、权限、文件上传等这类都需要花时间研究与调试。但是只要第一次研究通了,后面开发效率就快了。
若对以往的项目不进行总结:
A写了定时任务相关代码 B 写了文件上传相关代码 C写了权限相关代码
现有D项目需要同时有定时任务、文件上传、权限管理相关功能,如何处理?
传统方式:逐一搜寻A、B、C复制相关代码,此效率极为低下,因此基础框架就有了必要性。
基础框架方式:封装相关代码,形成common层,并搭建模板项目作为基础框架供其他项目调用
1.3 现有基础框架有哪些?
力软、JEECGBOOT、若依、芋道。其中力软为付费产品,JEECGBOOT的码云star为4.1k,若依的码云star为30.9k,芋道的码云star为13.8K。综合可见芋道和若依框架分值相对较高。
2 若依框架
主要包含:RuoYi RuoYi-Vue RuoYi-Cloud,分别为快速开发版,前后端分离版,微服务版。
生态齐全,并拥有拓展生态含uniapp版本、pgsql版本、mybaitplus版本、国产数据库版本、react、ant desing版本等
2.1前端页面
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
- 系统接口:根据业务代码自动生成相关的api接口文档。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 缓存监控:对系统的缓存信息查询,命令统计等。
- 在线构建器:拖动表单元素生成相应的Vue代码。
- 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
2.2系统架构
主要层及架构
1、系统环境
- Java EE 8
- Servlet 3.0
- Apache Maven 3
2、主框架
- Spring Boot 2.2.x
- Spring Framework 5.2.x
- Spring Security 5.2.x
3、持久层
- Apache MyBatis 3.5.x
- Hibernate Validation 6.0.x
- Alibaba Druid 1.2.x
4、视图层
- Vue 2.6.x
- Axios 0.21.x
- Element 2.15.x
主要的工具如下
3、芋道框架
项目地址
3.1 前端页面
3.2 功能清单
- 后端采用 Spring Boot、MySQL + MyBatis Plus、Redis + Redisson。
- 数据库可使用 MySQL、Oracle、PostgreSQL、SQL Server、MariaDB、国产达梦 DM、TiDB 等
- 权限认证使用 Spring Security & Token & Redis,支持多终端、多种用户的认证系统。
- 支持加载动态权限菜单,按钮级别权限控制,本地缓存提升性能。
- 支持 SaaS 多租户系统,可自定义每个租户的权限,提供透明化的多租户底层封装。
- 工作流使用 Flowable,支持动态表单、在线设计流程、会签 / 或签、多种任务分配方式。
- 高效率开发,使用代码生成器可以一键生成前后端代码 + 单元测试 + Swagger 接口文档 + Validator 参数校验。
- 集成微信小程序、微信公众号、企业微信、钉钉等三方登陆,集成支付宝、微信等支付与退款。
- 集成阿里云、腾讯云、云片等短信渠道,集成 MinIO、阿里云、腾讯云、七牛云等云存储服务。
4 框架对比
4.1 若依框架优势
1、功能简洁包含项目需要的最小框架:定时任务、系统参数、字典、通知公告、代码生成,启动项目速度快
2、具备完整的生态,查看其他语言代码方便
4.2 芋道框架优势
1、功能模块多,集成mapstruct、mybaitplus、Oauth2 、短信、错误码,启动速度慢
2、集成特定场景应用:支付、工作流
3、框架复杂,一些场景排查问题较难,有严格的VO 与APP\ADMIN接口区分,以及业务端和内部接口区分。代码框架接口清晰便捷明显,系统之间相互调用较多。
4、自动编写单元测试,每次打包时会利用的sqlite数据库进行单元测试。
5 框架选型
建议小团队使用若依框架,以下内容为亲自使用总结
(1)开发速度快,问题定位快
(2)可寻找任何语言开源替代(例如vue3的框架可能在IE9下不支持,需要换VUE2或者其他框架),或者项目团队成员只会net或python语言,这些都可以找到替代产品;国产化软件也可以找到相关替代。
建议大团队使用芋道框架
(1)APP端和pc端严格区分;业务API与前端接口严格区分
(2)有较多开源的拓展功能,集成了Hutool工具包,支持包含文件上传、小程序登录三方登录、工作流、短信、多租户、支付等功能。
(3)初始内置多种数据库脚本,可天然支持多种数据库含国产数据库。
6、若依基础框架项目分享
目前用若依的mybaitplus做了两个示例,分别包含单表查询、多表查询的案例。中间使用了代码生成方法。
6.1单表查询
(1)首先新建数据库表
(2)点开代码生成页面,配置列表、查询、搜索字段,对于字典或者时间范围类型等条件可对应进行配置
(3)生成代码,前端拷贝、后端拷贝。
6.2多表联合查询
(1)后端首先以单表模式生成增删改查
(2)在对应controller增加新的查询接口
(3)如果是表格页面,则前端复制页面的vue和api,直接进行修改及编写;表单可借助form-generator进行搭建。
具体若依案例项目含(单表及多表案例)的项目代码见链接.