企业级通用开发平台技术组件选型参考ssm+MyBatisPlus+vue-element-plus-admin+uni-app

今天来梳理下开发平台的技术选型,原则是主流+开源。进行了大致的分类,不过分类下的项目颗粒度大小不一,有的是某个层次的解决方案,如SpringMVC、MyBatis,有的则是某个功能点的解决方案,如fastjson、Hibernate Validator,后续会不断完善。

整体规划

定位是企业级通用开发平台,前后端分离架构,前端基于vue,后端java,单工程,多模块,部署形态为单体应用。
image.png

后端内核

SSM+MybatisPlus,使用SpringBoot。
重度使用MybatisPlus,包括主键策略、逻辑删除、乐观锁、自动填充、数据分页、CURD接口、条件构造器、多租户等,二次封装和扩展代码生成器,实现entity、dao、service、controller、vo及前端vue页面生成。

持久层

Mybatis,附加MyBatisPlus组件进行功能增强。MybatisPlus对于该层已经做了很好的封装和处理,因此没有再扩展,直接使用包com.baomidou.mybatisplus.core.mapper下的BaseMapper作为基类。
mapper接口类和mapper.xml配置文件,由代码生成器自动实现。

服务层

在MyBatisPlus封装的CURD接口上,基于模板方法设计思想,二次封装,将增删改查通用操作在基类中实现,预留新增前、修改后等方法,可由子类根据实际业务需求灵活扩展。在进行具体业务系统的功能开发时,仅需要继承基类,实现特定的业务逻辑即可,代码量大幅减少,代码简洁直观,易于维护。详细示例参见博文https://blog.csdn.net/seawaving/article/details/129591693 服务 章节。

控制器层

SpringMVC,作为后端的“前哨”,接收前端的请求,调用service层服务接口,返回结果给前端,进行统一的异常处理。使用了实体视图对象VO,在控制器层,负责将前端传入的VO,转换为entity实体,传入到service层,以及将service层返回的entity对象转换成VO,或者进行聚合。

安全框架

Spring Security,进行身份认证和权限控制。相对Shiro,Spring Security复杂得多,功能也强大得多。

日志

SLF4J作为日志门面组件,可灵活更换日志实现组件。
logback作为日志实现组件,使用了AOP切面技术,实现了审计日志(登录、注销、修改密码等)、运行日志(业务实体增删改查及个性化操作)、调度任务日志(调度任务执行情况)。

工具包

apache common,积累和沉淀了很多年,涵盖了常用的工具类,相对guava,优势在于全。

服务端验证

Hibernate Validator,基于注解实现数据验证,结合@ControllerAdvice返回给前端友好提示信息。

数据库连接池

druid,性能优秀,且自带监控功能。

缓存读写

spring-data-redis作为门面组件,可灵活更换实现组件。
lettuce作为实现组件,相比Jedis组件实现模式和机制更优秀。
Jedis使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。
Lettuce基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作。

Json处理

fastjson,将对象转换/序列化为json字符串,或从json字符串转换/反序列化成对象。

对象深度拷贝

orika,开发中经常需要进行对象间属性拷贝,像apache common和Spring util等工具包提供的大多是浅度拷贝,基本数据类型的属性可实现值拷贝,引用类型的属性需要深度拷贝组件实现。orika使用简单,且性能较高。

后端扩展

工作流

comunda,activiti主分支已落寞,在comunda和flowable这两个分支中选择了前者。后端深度集成activiti的主流分支Camunda7,前端深度集成与改造仿钉钉流程设计器,自行实现从json数据模型转换为工作流程模型的复杂工作。

任务调度

Quartz,二次封装,源码实现服务,前端功能页面配置调度,控制启停,调整调度设置(时间、频率、输入参数……),查看调度日志。

消息队列

RabbitMQ,业务类消息处理。
kafka更适合海量数据的采集和处理,如日志。

网络通信框架

netty,主流高性能NIO框架,使用简便,扩展性强,负载能力强悍。

邮件

javamail组件二次封装。

全文搜索

Elastic Search,全文搜索的扛把子。

前端

框架

vue3.0,使用开源的vue-elment-plus-admin框架,是之前基于vue2.0和element ui的vue-element-admin框架的升级版。

图表

v-charts,饿了么团队出品的开源组件,基于echarts二次封装,统一提供了一种对前后端都友好的数据格式,只需设置简单的配置项,便可轻松生成常见的图表,只支持vue2.0。
更换为百度图表官方出品的vue-echarts。

文件上传

vue-simple-uploader
组件化封装,兼顾性能和操作便捷性
支持单文件、多文件、文件夹上传
支持拖拽操作方式上传
可暂停、续传
大文件分块上传
支持进度、预估剩余时间、出错自动重试等操作

数据存储

数据库

MySql,尽量避免使用数据库原生Sql语法与内置函数方法、存储过程,从而可以兼容如oracle、sql server等其他常见的关系型数据库。

缓存

redis,存储数据字典、热点数据。

文件

建立抽象层,通过接口定义对于文件的上传、下载、切片等功能;存储方式支持文件服务器、对象储存系统、云环境下的文件存储;通过更改配置,可以灵活选择具体的存储方式,业务应用无感知。
目前实现了两种模式,本地磁盘存储模式和基于主流开源的oss系统mino模式,通过配置即可切换。

移动端

框架

uni-app,无可争议的多端开发框架,vue开发语言和微信api的组合,巧妙而强大,生态已经做起来了。

杂项

jdk1.8
IDEidea
web容器tomcat
源码管理git
构建工具maven

开源平台资料

平台名称:一二三开发平台
简介: 企业级通用开发平台
设计资料:csdn专栏
开源地址:Gitee
开源协议:MIT
欢迎收藏、点赞、评论,你的支持是我前行的动力。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学海无涯,行者无疆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值