打造Spring Boot应用时常用到的轮子

news/2024/11/29 0:32:43/

文章目录

    • 前言
    • 万能的SpringBoot应用包含哪些组件?
    • 主要技术点
    • SpringBoot应用常用的开源组件
    • Spring内置工具类
  • 一些完整的SpringBoot的开源项目
    • 开源博客和社区
    • 优秀CMS
    • 开源电商
    • Java awesome

前言

如何打造一款完备的、可复制的SpringBoot应用?

所谓完备,就是功能齐全,包含用户登录和权限管理,基本对象的管理,这个基本对象可以是商品,也可以是博客,有缓存,有定时任务,有上传下载,有API。简而言之,涵盖了常规web应用的方方面面。

可复制,就是我这个应用摇身一变,可以是博客系统,可以是CMS,也可以是论坛和电子商城。

有时,把符合上述特征的应用成为万能应用。某宝上经常有小公司出售这类应用。

万能的SpringBoot应用包含哪些组件?

名称功能
1代码生成器正反双向+快速表单构建器freemaker模版技术, 0行代码,生成完整的一个模块,带页面、建表sql脚本、处理类、service等完整模块
2多数据源(支持同时连接无数个数据库,可以不同的模块连接不同数的据库)支持N个数据源
3druid阿里数据库连接池
4shiro安全权限框架(菜单权限和按钮权限)
5ehcache缓存框架
6代码编辑器在线模版编辑,仿开发工具编辑器
7摄像头功能调用摄像头拍照, 自定义裁剪编辑头像,头像图片色度调节
8websocket及时站内信并声音提醒、实时在线管理、websocket及时刷新页面(完胜ajax技术)更新即时通讯功能,支持好友,群组,发图片、文件,消息声音提醒,离线消息, 保留聊天记录

其它系统模块

名称功能
1权限管理点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限。(一个用户可以多个角色) 按钮权限: 给角色分配按钮权限。
2按钮管理自定义按钮管理,维护按钮shiro权限标识等
3菜单管理N级别自定义菜单,选择菜单图标,菜单状态显示隐藏(递归处理)
4数据字典N级别,支持多级别分类。内设编号,排序等
5日志管理记录用户登录退出和一些重要操作记录
6在线管理websocket技术,实时检测在线用户列表,统计在线人数,可强制用户下线 同一用户只能在一个客户端登录
7系统用户对各个基本的用户增删改查,导出到excel表格,批量删除
8代码生成生成完整的模块代码,并保留生成记录模版,可复用 (超强悍开发利器) 正向生成: 生成完整的模块,页面、处理类、mapper层、service层、myabaits的xml 建表的sql脚本等 反向生成: 任意连接其它数据库(mysql、oracle、sqlserver),根据表反射生成本系统的模块
9模版管理代码在线编辑器,管理模版,保存编辑记录,一键还原,代码生成器如虎添翼
10性能监控监控整个系统的性能,SQL监控,SQL防火墙,URL监控,SPRING监控,SESSION监控等
11系统设置修改系统名称,每页显示条数, 邮件服务配置,站内信配置
12站内信收信箱和发信箱,websocket技术通讯技术做的及时收信提醒,可配置语音提示来信,通讯模块 单聊群聊发图片发文件 离线消息保留聊天记录
13好友管理搜索、添加、删除、拉黑好友,查看好友资料
14好友分组自定义好友分组
15我的群组创建群组,搜索申请加入别人的群,踢出群成员,管理群聊天记录
16数据库备份可备份单表(sqlserver不支持)、整库,支持本地和远程备份(java界面编程技术,socket编程技术)
17备份定时器quartz 强大的任务调度,多线程备份数据库,任务启动关闭异步操作
18数据库还原历史备份记录,还原数据库 or 单表(sqlserver不支持),统计备份时间和文件大小
19SQL编辑器强大的SQL编辑器,支持编辑语句复杂查询语句,生成动态报表,可导出excel
20菜单权限分配给每个角色不同的菜单权限, 每个角色看到的菜单不同,N级别菜单 按钮权限
21增删改查权限分配具体到不同的菜单,自定义按钮管理 支持多用户分权限管理后台, 权限具体到不同的菜单不同的按钮(一个用户可以多个角色)

主要技术点

  1. 导入 导出 excel 文件 (应用在系统用户中)
  2. 生成 word文件 (应用在代码生成器生成的doc文档)
  3. IO 流下载文件 (应用在代码生成器中生成后压缩成zip 文件下载)
  4. 代码 zip 压缩打包 (应用在代码生成器中生成后压缩成zip 文件)
  5. MD5加密 SHA加密(登录密码用此加密)接口加密身份校验
  6. 数据库连接池 阿里的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势,支持并发
  7. 安全框架 shiro (登录授权)(session管理)(shiro 注解菜单权限拦截)(shiro 标签按钮权限)
  8. freemaker模版引擎(代码生成器用)
  9. ehcache 自定义缓存 ,选择缓存存放目录,处理并发,增加系统性能
  10. tab标签页面功能,标签自由切换,不重复操作数据库(可全部关闭,关闭当前,关闭其它)
  11. 多数据源技术
  12. 调用摄像头拍照技术,图片裁剪技术 (用户头像编辑)
  13. 在线编辑器,仿开发工具 (代码生成器的模版编辑)
  14. 单群发邮件,可以发html、纯文本格式
  15. 根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名)
  16. 站内信语音提醒,js控制音频播放
  17. java 读写 ini 配置文件
  18. java websocket 即时通讯技术,点对点,好友、群组,发图片文件,离线消息,保留聊天记录
  19. 百度富文本编辑器,可上传图片、附件
  20. java Quartz 任务调度 (应用在数据库定时备份模块中)

SpringBoot应用常用的开源组件

技术说明官网
SpringBootWeb应用开发框架https://spring.io/projects/spring-boot
SpringSecurity认证和授权框架https://spring.io/projects/spring-security
Shiro认证授权
sa-token认证授权,更简单易用,功能强大
MyBatisORM框架http://www.mybatis.org/mybatis-3/zh/index.html
MyBatisGenerator数据层代码生成器http://www.mybatis.org/generator/index.html
Elasticsearch搜索引擎https://github.com/elastic/elasticsearch
RabbitMQ消息队列https://www.rabbitmq.com/
Redis内存数据存储https://redis.io/
MongoDBNoSql数据库https://www.mongodb.com
LogStash日志收集工具https://github.com/elastic/logstash
Kibana日志可视化查看工具https://github.com/elastic/kibana
Nginx静态资源服务器https://www.nginx.com/
Docker应用容器引擎https://www.docker.com
Jenkins自动化部署工具https://github.com/jenkinsci/jenkins
Druid数据库连接池https://github.com/alibaba/druid
OSS对象存储https://github.com/aliyun/aliyun-oss-java-sdk
MinIO对象存储https://github.com/minio/minio
JWTJWT登录支持https://github.com/jwtk/jjwt
LombokJava语言增强库https://github.com/rzwitserloot/lombok
HutoolJava工具类库https://github.com/looly/hutool
PageHelperMyBatis物理分页插件http://git.oschina.net/free/Mybatis_PageHelper
Swagger-UIAPI文档生成工具https://github.com/swagger-api/swagger-ui
Hibernator-Validator验证框架http://hibernate.org/validator
Spring Security oauth22.1.5认证和授权框架
MyBatis3.5.0ORM框架
MyBatisPlus3.1.0基于mybatis,使用lambda表达式的
Swagger-UI2.9.2文档生产工具
Hibernator-Validator6.0.17验证框架
redisson3.10.6对redis进行封装、集成分布式锁等
hikari3.2.0数据库连接池
hikaricp数据库连接池管理
log4j22.11.2更快的log日志工具
fst2.57更快的序列化和反序列化工具
orika1.5.4更快的bean复制工具
lombok1.18.8简化对象封装工具
hutool4.5.0更适合国人的java工具集
swagger-bootstrap1.9.3基于swagger,更便于国人使用的swagger ui

Spring内置工具类

在org.springframework.util包下面,藏着许多实用类,有了它们,就无需再引入commons-io那些依赖了:

  • Assert 断言工具类
  • StringUtils
  • ObjectUtils
  • CollectionUtils
  • FileCopyUtils
  • ResourceUtils
  • ReflectionUtils
  • AopContext

一些完整的SpringBoot的开源项目

博客、论坛、社区、电子商城、CMS都是比较通用的应用,都能在github上找到很多完整的好的例子。

开源博客和社区

  • halo, Star : 18.5k
  • OneBlog
  • 蘑菇博客
  • mblog: 一款基于 Spring Boot 的博客系统,支持多用户,支持切换主题
  • solo: Solo是 B3log 分布式社区的 Java 博客端节点系统, 采用的是一个叫做 Latke 的 web 框架
  • 一个现代化社区, Java论坛系统
  • pybbs论坛
  • sym社区系统

优秀CMS

  • PublicCMS
  • 铭飞 / MCMS
  • PB-CMS
  • JavaWeb CMS
  • 林间有风Java后端
  • 林间有风vue3前端

开源电商

  • 电商系统
  • CRMEB电商系统
  • 心脏跳动旗下newbee-mall电商系列产品
  • mall4j
  • mall4cloud

Java awesome

  • awesome-java
  • Java资源大全中文版
  • 非常棒的 Java 开源项目集合
  • https://blog.csdn.net/weixin_53227758/article/details/125451018?

http://www.ppmy.cn/news/19300.html

相关文章

前端艺术之毛玻璃-倾斜-日历

前端艺术之毛玻璃-倾斜-日历描述项目效果index.htmlindex.css描述 项目描述开发语言HTML、JavaScript、CSS库dyCalendarJS、vanilla-tiltEdge108.0.1462.54 (正式版本) (64 位) 该项目中需要使用到的库有: dyCalendarJS vanilla-tilt.js 是 JavaScript 中的一个平…

ARP渗透与攻防(六)之限制网速攻击

系列文章 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 ARP渗透与攻防(三)之流量分析 ARP渗透与攻防(四)之WireShark截获用户数据 ARP渗透与攻防(五)之Ettercap劫持用户流量 ARP限制网速攻击 大家没想到吧,ARP还能限制对方网速。当kali欺骗了网关和受…

为了方便项目打包,我用Node写了个git-tag工具

目录 前言 实现过程 起步 npm全局命令 功能实现 功能验证 代码发布 写在最后 前言 在使用git执行打包操作时,我们常常会根据场景在tag中增加一些标识。 以基准版本为1.0.0为例:软件开发初期可以定义1.0.0-alpha.0,开发阶段是1.0.0-b…

《安富莱嵌入式周报》第300期:几百种炫酷灯阵玩法, USB Web网页固件升级,波士顿动力整活,并联二极管问题,VisualStudio升级,STM32C0

往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 祝大家春节快乐! 视频版: https://www.bilibili.com/video/BV1UY4y1d7C7 《安富莱嵌入式周…

恶意代码分析实战 7 WinDbg

配置WinDbg双机调试。 下载Windbg(WDK)。 事实上你自己的win10上应该会自带。 配置WinXP虚拟机的boot.ini 改成如图所示的样子 修改主机上Windb的属性。 修改成如图所示: 启动WinXP选择调试状态,启动Windbg即可开始调试。 7.…

Docker安装教程(看这篇就够了)

Docker安装教程一.CentOS安装Docker1.卸载(可选)2.安装docker3.启动docker4.配置镜像加速二.CentOS7安装DockerCompose1.下载2.修改文件权限3.Base自动补全命令:三.Docker镜像仓库1.简化版镜像仓库2.带有图形化界面版本3.配置Docker信任地址D…

C++编译之(2)-make及makefile编译过程

引言 前面我们介绍了c的编译工具,使用g实现对单个文件,多个文件,静态库动态库的编译;我们继续以该项目为例讲解; g 的编译使用入门教程-点这里查看 我们继续以前面的目录解构为例,这里给出上一节的目录如下…

基础知识一览3

这里写目录标题1.Servlet1.1 入门1.2 什么是Servlet1.3 Servlet的作用1.4 Servlet生命周期1.5 Servler的体系结构1.6 Servler的两种配置方式2.Filter2.1 Filter拦截路径配置2.2 过滤器链2.2 入门2.3 过滤器链2.4 过滤器生命周期3.Listener3.1 监听器分类3.1.1 一类监听器4.Serv…