opcj2-盘点几个常见的Java开源脚手架

news2024/11/16 0:34:00

很多人抱怨自己是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,保持同步更新。

  • 提供前后端分离和不分离两种方案。

目前内置的功能有:

  1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。

  2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。

  3. 岗位管理:配置系统用户所属担任职务。

  4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。

  5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。

  6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。

  7. 参数管理:对系统动态配置常用参数。

  8. 通知公告:系统通知公告信息发布维护。

  9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。

  10. 登录日志:系统登录日志记录查询包含登录异常。

  11. 在线用户:当前系统中活跃用户状态监控。

  12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。

  13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。

  14. 系统接口:根据业务代码自动生成相关的api接口文档。

  15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。

  16. 在线构建器:拖动表单元素生成相应的HTML代码。

  17. 连接池监视:监视当前系统数据库连接池状态,可进行分析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),她是一个项目集,由"工具集"、"后端"、"前端"组成,为满足高内聚低耦合设计原则,将一个大项目拆解为以下几个子项目:

工具集

项目giteegithub备注
lamp-utillamp-util(opens new window)lamp-util(opens new window)核心工具集
lamp-generatorlamp-generator(opens new window)lamp-generator(opens new window)代码生成器
lamp-joblamp-job(opens new window)lamp-job(opens new window)分布式定时调度器

后端

项目giteegithub备注
lamp-cloudlamp-cloud(opens new window)lamp-cloud(opens new window)SpringCloud(微服务)版
lamp-bootlamp-boot(opens new window)lamp-boot(opens new window)SpringBoot(单体)版
微服务版示例lamp-samples(opens new window)lamp-samples(opens new window)常用示例

前端

项目giteegithub备注演示地址
lamp-weblamp-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-pluslamp-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软件可以自动帮助完成一些基础操作和自动生成增删改查等等基础操作。因此在接下来的工作中,我们只会采用这个套件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TF4-圈子功能

TF4-圈子功能1、首页推荐1.1、接口分析1.2、功能实现1.2.1 controller1.2.2 service1.2.3 API接口1.2.4 请求dto对象2、MongoDB集群3、圈子功能2.1、功能说明1.2、实现方案分析1.3、技术方案(重点)1.4、表结构设计4、圈子实现3.1、环境搭建3.1.1、mongo主键自增3.1.2、实体类Mo…

基于matlab的SVM支持向量机分类仿真,核函数采用RBF函数

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 支持向量机(support vector machines, SVM)是二分类算法,所谓二分类即把具有多个特性(属性)的数据分为两类,目前主流机器学…

如何清理 docker 磁盘空间 附讲解(全)

目录前言1. Docker System 命令1.1 docker system df1.2 docker system prune2. 冗余容器或镜像3. 限制容器日志前言 补充docker知识点,可看我之前的文章:Docker零基础从入门到精通(全) docker 镜像特别容易占空间,稍…

基于Redis实现高性能延时消息队列

最近在倒腾自建博客后端系统,需要用到延时任务的功能,但手头只有一套MySQL和Redis,如果搞一套MQ成本有点大,于是想着用redis实现延时消息队列。有些场景用数据库的定时扫表也能简单实现延时消息的功能,不过对于我这边的…

Bitmap,布隆过滤器初步了解

布隆过滤器使用教程 文章目录布隆过滤器使用教程1.背景2.什么是Bitmap3.布隆过滤器3.1 什么是布隆过滤器3.2 布隆过滤器的作用3.3 布隆过滤器的基本原理4.布隆过滤器的实现Guava和Redisson4.1 实现思路4.2 SpringBoot实现这些操作Bitmap,guava,redisson布隆过滤器1.背景 最近公…

redis知识点汇总

一、Redis的数据类型和数据结构 1、Redis五种数据类型 String(字符串)、List(列表)、Hash(哈希)、Set(集合)和Sorted Set(有序集合)。 2、Redis的底层数据…

C# 数据类型分值类型及引用类型

一 程序中的变量与常量 程序的基本任务是:对数据进行处理; 数据分为变量(variable)与常量(literal) int age18; 变量是值可以改变,本质上是内存的空间,用来存储信息 常量的值是固定的,直接写出来的,称字面…

点击按钮,下载文件

实现文件的下载功能 1、使用a标签 直接下载仅适用于浏览器无法识别的文件。 如果是浏览器支持的文件格式&#xff0c;如html、jpg、png、pdf等&#xff0c;则不会触发文件下载&#xff0c;而是直接被浏览器解析并展示 <ahref"http://xxxxxx.rar"download>下载…

vue中的性能优化

文章目录一、Vue为什么要做性能优化二、如何做vue的性能优化1. 网络请求优化link标签项目静态资源压缩懒加载利用浏览器的缓存机制高效复用项目文件总结2. 代码优化3. 用户体验优化场景1场景2一、Vue为什么要做性能优化 性能优化的目的是使网站的加载速度更快&#xff0c;用户…

【语音处理】基于自适应差分脉冲编码调制(ADPCM)的实现研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步进步&#xff0c;matlab项目目标合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信息&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算…

音视频直播系统之 WebRTC 中的协议UDP、TCP、RTP、RTCP详解

一、UDP/TCP 如果让你自己开发一套实时互动直播系统&#xff0c;在选择网络传输协议时&#xff0c;你会选择使用UDP协议还是TCP协议 假如使用 TCP 会怎样呢&#xff1f;在极端网络情况下&#xff0c;TCP 为了传输的可靠性&#xff0c;将会进行反复重发信息的操作 在 TCP 协议…

Nagios篇之Nagios服务关联飞书实现消息告警

一、前言 通常情况下&#xff0c;我们在利用Nagios监控来做服务器监控时&#xff0c;告警是必不可少的&#xff0c;以便于运维人员能够及时发现异常&#xff0c;进而处理问题&#xff0c;所以关联Nagios就变得极为重要。 Nagios关联告警的形式很多&#xff0c;可以进行短信推送…

wpf-ListView中放置可动态调节范围的刻度尺

需求描述 某个ListView占据整个窗口&#xff0c;当窗口的宽度发生改变时&#xff0c;某一列中显示的、某一行的字符数目&#xff0c;能跟随窗口宽度变化而增减。 下面是我做完的效果&#xff1a;&#xff08;只展示窗口的一部分&#xff09; 此时是窗口缩放的极限&#xff0…

为什么全光谱台灯对孩子眼睛好呢?台灯全光谱到底是什么意思

相信大家在购买台灯时有经常看到“全光谱”、“高显色”等关键词&#xff0c;其实这指的是台灯的某方面特性&#xff0c;所谓全光谱&#xff0c;就是指光线的光谱成分完全&#xff0c;与自然光别无二致。 我们都知道&#xff0c;一束自然太阳光不是由某个单一成分构成&#xff…

Briefings in Bioinformatics2021 | 药物挖掘分子设计--生成模型综述

原文标题&#xff1a;Molecular design in drug discovery: a comprehensive review of deep generative models 论文地址&#xff1a;Molecular design in drug discovery: a comprehensive review of deep generative models | Briefings in Bioinformatics | Oxford Academ…

35_DMA基本原理

目录 DMA简介 DMA框图 STM32的DMA有一下一些特征 DMA1控制器 DMA处理 数据方向 仲裁器 DMA通道 可编程的数据量 指针增量 循环模式 存储器到存储器模式 通道传输数据量 中断 通道配置过程 DMA简介 DMA全称Direct Memroy Access, 既直接存储器访问。 DMA传输将…

重编内核导致ubuntu有线连接不出现的问题

网卡是intel的i225v 千兆网卡&#xff0c;系统为ubuntu18.0.4&#xff0c;原始内核为5.4.0-135-generic&#xff0c;但是重新编译出错&#xff0c;不知道少了什么东西&#xff0c;也没去深究&#xff0c;重新下载了5.9.0的内核&#xff1b;结果重新编译内核重启有线网卡就不能用…

2.MyBatis环境搭建

数据准备 CREATE TABLE user (id int(11) NOT NULL,username varchar(30) NOT NULL,sex varchar(1) NOT NULL,birthday varchar(10) NOT NULL,address varchar(100) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8;insert into user values(1,"steven&qu…

ADI Blackfin DSP处理器-BF533的开发详解2:开发环境的搭建

软硬件开发环境的搭建 纯流程化的东西&#xff0c;没什么技术含量&#xff0c;照着做就行了。 开发板和仿真器进行物理链接&#xff0c;也就是插上JTAG头。 特别特别特别注意&#xff0c;仿真器和开发板均不上电的情况下插JTAG头&#xff0c;不要带电插JTAG头&#xff0c;你…

ORB-SLAM2 ---- Frame::GetFeaturesInArea函数

目录 1.函数用处 2.步骤 3.code 4.函数解释 4.1 函数思想 4.2 代码解释 1.函数用处 找到在 以为中心&#xff0c;半径为的圆形内且金字塔层级在的特征点。 2.步骤 Step 1 计算半径为r圆左右上下边界所在的网格列和行的id Step 2 遍历圆形区域内的所有网格&#xff0c…