很多人抱怨自己是CURDer,很多时候就是在简单的修修改改。如果不书序SSM(Spring、SpringMVC和Mybatis)套路的人可能开始的时候会感觉非常吃力。但是熟悉之后发现其实就这么回事。SpringMVC负责响应对外接口,Mybatis负责数据库的访问,Spring则负责整体的bean管理,目前一般都使用SpringBoot做进一步的封装。不管多么复杂的业务,基本结构都是这样子。而目前已经有很多脚手架工程可以直接帮我们将这些事情自动生成,例如腾讯阿里等都有一些开源的脚手架工程,很多公司也会有自己的脚手架工程, 所以只掌握这些已经远远不够了。
那该怎么办呢?有两个方向,一个是深入研究SSM等经典的框架,对其原理、源码等有非常深入的理解和认识 ,从中学到一些高级的设计思想、经典问题的解决方案等等,提高自己的思维能力和设计能力。第二个是用尽量快的时间解决工作中的增删改查问题,将更多的精力放在系统设计和更高的技术方案上,例如微服务高性能缓存解决方案、微服务负载均衡解决方案等等。总之就是减少在基本问题上浪费时间 ,将更多精力放在高级问题上。
1 常见脚手架工程调研
开发一个新服务,一般我们都会在已有服务的基础上修改,这样可以提高开发效率,因此就产生了很多“脚手架”工程,其中不乏很多开源的Java脚手架工程,
目前在github以及国内的gitee等中都有大量的开源项目,不过这些项目一般都是个人的,我们选择几个关注度和质量都比较高的看一下:
1.pig
基于 Spring Cloud 2020 、Spring Boot 2.5、 OAuth2 的 RBAC 权限管理系统。
使用的技术栈:
Spring Boot
Spring Cloud
Spring Cloud Alibaba
Spring Security OAuth2
Mybatis Plus
hutool
Avue
这个项目目前有36K的start,文档是放在语雀的,针对小白,很多操作都有视频讲解,社区也很活跃,是个不错的项目。
2.Cloud-Platform
Cloud-Platform也是基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。基本结构如如下:
这个项目目前已经不怎么活跃了,更新也比较缓慢,因此不建议再用。
3.microservices-platform
基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离的企业级微服务多租户系统架构。并引入组件化的思想实现高内聚低耦合并且高度可配置化,适合学习和企业中使用。
基本架构如下:
目前已经实现的功能如下:
这个项目目前的活跃度一般,不过功能强大而且完善,值得试一试。
4.RouYi-Cloud
基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统。若依是一套全部开源的快速开发平台。其特征是
-
采用前后端分离的模式,微服务版本前端(基于 RuoYi-Vue)。
-
后端采用Spring Boot、Spring Cloud & Alibaba。
-
注册中心、配置中心选型Nacos,权限认证使用Redis。
-
流量控制框架使用Sentinel,分布式事务使用Seata。
-
提供了技术栈(Vue3 Element Plus Vite)版本RuoYi-Cloud-Vue3,保持同步更新。
-
提供前后端分离和不分离两种方案。
目前内置的功能有:
-
用户管理:用户是系统操作者,该功能主要完成系统用户配置。
-
部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
-
岗位管理:配置系统用户所属担任职务。
-
菜单管理:配置系统菜单,操作权限,按钮权限标识等。
-
角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
-
字典管理:对系统中经常使用的一些较为固定的数据进行维护。
-
参数管理:对系统动态配置常用参数。
-
通知公告:系统通知公告信息发布维护。
-
操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
-
登录日志:系统登录日志记录查询包含登录异常。
-
在线用户:当前系统中活跃用户状态监控。
-
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
-
代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
-
系统接口:根据业务代码自动生成相关的api接口文档。
-
服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
-
在线构建器:拖动表单元素生成相应的HTML代码。
-
连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
从上面来看,项目里说毫无保留给个人及企业免费使用,目前他们好像一直在搞Java培训了,我估计这个应该不会免费。
这个项目的活跃度目前还是可以的,值得研究一下。
5.lamp-cloud
lamp-cloud
是基于jdk11/jdk8
+ SpringCloudAlibaba
+ SpringCloud
+ SpringBoot
开发的微服务中后台快速开发平台,专注于多租户(SaaS架构)解决方案,亦可作为普通项目(非SaaS架构)的基础开发框架使用,目前已实现插拔式 数据库隔离、SCHEMA隔离、字段隔离 等租户隔离方案。
拥有自研RBAC(基于租户应用的角色权限控制体系)、网关统一鉴权、数据权限、优雅缓存解决方案、防缓存击穿、前后端统一表单校验、字典数据自动回显、可视化前后端代码生成器、支持多种文件存储、支持多种短信邮件发送接口、灰度发布、防XSS攻击、防SQL注入、分布式事务、分布式定时任务等功能; 支持多业务系统并行开发, 支持多服务并行开发,是中后台系统开发脚手架的最佳选择。
lamp-cloud 代码简洁,注释齐全,架构清晰,非常适合个人学习以及中小企业作为基础框架使用。采用Spring Cloud Alibaba、SpringBoot、Mybatis、Seata、Sentinel、RabbitMQ、FastDFS/MinIO、SkyWalking等主要框架和中间件。 本项目旨在实现基础框架能力,不涉及具体业务。
灯灯(简称灯, 英文名:lamp),她是一个项目集,由"工具集"、"后端"、"前端"组成,为满足高内聚低耦合设计原则,将一个大项目拆解为以下几个子项目:
工具集
项目 | gitee | github | 备注 |
---|---|---|---|
lamp-util | lamp-util(opens new window) | lamp-util(opens new window) | 核心工具集 |
lamp-generator | lamp-generator(opens new window) | lamp-generator(opens new window) | 代码生成器 |
lamp-job | lamp-job(opens new window) | lamp-job(opens new window) | 分布式定时调度器 |
后端
项目 | gitee | github | 备注 |
---|---|---|---|
lamp-cloud | lamp-cloud(opens new window) | lamp-cloud(opens new window) | SpringCloud(微服务)版 |
lamp-boot | lamp-boot(opens new window) | lamp-boot(opens new window) | SpringBoot(单体)版 |
微服务版示例 | lamp-samples(opens new window) | lamp-samples(opens new window) | 常用示例 |
前端
项目 | gitee | github | 备注 | 演示地址 |
---|---|---|---|---|
lamp-web | lamp-web(opens new window) | lamp-web(opens new window) | 基于 vue-admin-element (element-ui) | https://boot.tangyh.top/lamp-web(opens new window) |
lamp-web-plus | lamp-web-plus(opens new window) | lamp-web-plus(opens new window) | 基于 vue-vben-admin (vue 3 + ant design vue 2) | https://pro.tangyh.top(opens new window) |
整体结构如下:
这个项目相对前面的而言比较新一些,社区的活跃度也不错,而且还有配套的官网和demo网站,整体来说还是不错的。
上面介绍了这么多,我们会采用哪个呢?答案是一个都不用,因为我们做这个项目的目的就是要自己趟一遍这条路,我们要自己搭建上述的这些功能。
不过为了方便操作,我们会先集成renren开源,里面有三个配套的项目非常不错:
1.renren-generator,简单的代码生成工具,可以根据数据库帮助我们快速生成ORM的controller层、service层和storage层的代码。可在线生成entity、xml、dao、service、html、js、sql代码,减少70%以上的开发任务。很多基础工作我们必须做,但是很多重复的劳动就不必做。
2.renren-fast,比较简单的后台管理工具,集成了数据库、定时任务等常见的操作,我们使用其进行后台业务的管理,目前配置好之后就可以与renren-fast-vue搭建成一个小型的前后端分离的管理系统了,简单方便。
3.renren-fast-vue,一个配套的VUE前端工程,我们从头将所有的页面写完太费劲了,基于一个基础的VUE服务开发会大大提高我们的工作效率。目前这个工程已经不怎么维护了,作者说都迁移到了renren-UI服务里了。
如果完全从零开始搭建完整的服务,工作量太大了,特别是前端页面,可能又慢又丑,renrenkaiyuan软件可以自动帮助完成一些基础操作和自动生成增删改查等等基础操作。因此在接下来的工作中,我们只会采用这个套件。