前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >来看看这个超好用的项目脚手架吧!5分钟搭建一个Spring Boot 前后端分离系统!

来看看这个超好用的项目脚手架吧!5分钟搭建一个Spring Boot 前后端分离系统!

作者头像
Guide哥
发布2021-09-16 10:07:12
2.7K0
发布2021-09-16 10:07:12
举报
文章被收录于专栏:JavaGuideJavaGuide

中午好啊,我是 Guide!

今天给大家推荐一个非常不错的快速项目脚手架!拿来学习或者接私活都非常巴适!

这个项目我其实很早就有关注。5 月 16 日的时候,我就已经将其收录进了CodingDocs/awesome-java (非常棒的 Java 开源项目集合)中的快速开发脚手架这一模块中。

awesome-java 地址 :

  • Github :https://github.com/CodingDocs/awesome-java
  • Gitee :https://gitee.com/SnailClimb/awesome-java(Github 无法访问或者访问速度比较慢的小伙伴可以看码云上的对应内容)

昨天才联系到这个项目的作者,想认识一下。

好的项目值得更多人看到!开源不易,且行且珍惜。

简介

BallCat 组织旨在为项目快速开发提供一系列的基础能力,方便使用者根据项目需求快速进行功能拓展。

在以前使用其他后台管理脚手架进行开发时,经常会遇到因为项目业务原因需要进行二开的问题,在长期的开发后,一旦源项目进行迭代升级,很难进行同步更新。

为了解决这一问题,BallCat 将自身所有的业务和功能都设计为可插拔的依赖,方便用户自由组装和卸载。

开发时,用户以依赖的方式引入 BallCat 所提供的模块,当 BallCat 项目升级时,用户只需同步更新版本号,即可获得功能更新。

Ballcat 也会为每个版本的升级改动列出详细的更新日志,以及增量 SQL。

  • Github 地址 :https://github.com/ballcat-projects/ballcat
  • Gitee 地址:https://gitee.com/ballcat-projects/ballcat (如果 Github 访问速度比较慢的话,可以访问 Gitee )
  • 文档地址:http://www.ballcat.cn/

技术栈

  • 后端 :Spring Boot、Spring Security、Spring Security OAuth2、Mybatis Plus、Hutool
  • 前端 :Vue、Vue Router、Vuex、Axios、Ant Design Vue(前端对应的 react 版本已经在开发中,Vue3 版本也是未来肯定要支持的)

项目演示

后台管理

演示地址 (账户:admin ;密码:a123456) :

http://preview.ballcat.cn/

演示效果

代码生成器

代码生成器提供了在线编辑模板的功能,以及多数据源的支持。

只需启动一个代码生成器服务放在测试服,所有项目需要生成代码时都可以复用此生成器,减少了频繁切换项目启动生成器的繁琐。

演示地址

http://codegen.ballcat.cn/

演示效果

业务模块

BallCat 为后台管理的一些基本需求提供了以下五个业务模块,用户可以按需引入:

  • ballcat-auth(授权模块) :用于支撑 OAuth2 的授权服务器,集成了登录图像验证码,登录 AES 密码解密过滤器等相关功能。目前使用 Spring-Security-OAuth2 作为基础,后续将迁移到 spring-authorization-server 项目。
  • ballcat-system(系统模块) :提供了用户管理、角色管理、菜单管理、组织架构、字典管理、系统配置等这些后台管理系统中不可或缺的核心功能。
  • ballcat-log(日志模块) :提供了登录日志、操作日志、访问日志等日志记录功能,提供了 TraceId,可串联一次请求中的所有日志信息。日志默认存储位置在 mysql 中,用户可以按需定制日志处理逻辑。
  • ballcat-i18n(国际化模块) :提供了基于数据库的国际化信息配置存储方案,提供 local + redis 双重缓存处理,提升国际化处理效率。
  • ballcat-notify(通知模块) :目前提供了系统公告的能力,下个版本将会新增通知相关的功能。

BallCat 项目模块结构

功能模块

功能模块和业务无关,非 ballcat 项目也可以引入这些模块获得功能增强,用户按照实际业务需求选择模块进行集成。

包括但不限于以下这些功能

  • 数据权限控制,在 orm 层实现,基于 Jsqparse 解析 Sql,进行权限范围的 sql 注入
  • 国际化功能,不仅支持 spring 原生的文件配置形式,还可以自定义动态加载国际化配置
  • 注解使用 redis 缓存、分布式锁,防击穿,全局 key 前缀等功能
  • 注解快速实现 excel 导入导出功能
  • 支付功能:包括支付宝、微信、USDT 虚拟货币等
  • 基于 S3 协议的对象存储封装,方便一套代码兼容大部分云平台,如阿里云,七牛云,腾讯云

目前提供的功能模块列表

代码语言:javascript
复制
|-- ballcat-common   -- 基础公用组件
|   |-- ballcat-common-core    -- 核心组件
|   |-- ballcat-common-desensitize  -- 脱敏基础组件
|   |-- ballcat-common-i18n    -- 国际化基础组件
|   |-- ballcat-common-idempoten  -- 幂等基础组件
|   |-- ballcat-common-log          -- 日志基础组件
|   |-- ballcat-common-model   -- 公用的一些模型
|   |-- ballcat-common-redis   -- redis基础组件
|   |-- ballcat-common-security   -- 安全相关,以及资源服务器配置
|   |-- ballcat-common-util    -- 公用的工具
|   `-- ballcat-common-websocket  -- 对于 spring websocket 的一些抽象封装
|-- ballcat-dependencies        -- ballcat项目本身各子模块的依赖管理,以及第三方模块的依赖管理
|-- ballcat-extends          -- 扩展模块,大多是对于一些第三方组件的扩展处理
|   |-- ballcat-extend-dingtalk   -- 钉钉的一些操作封装
|   |-- ballcat-extend-kafka   -- kafka 的一些操作扩展
|   |-- ballcat-extend-kafka-stream  -- kafka 流处理的一些操作扩展
|   |-- ballcat-extend-mybatis-plus  -- 基于 mybatis-plus 相关的一些扩展
|   |-- ballcat-extend-pay-ali   -- 针对支付宝支付的一些操作封装
|   |-- ballcat-extend-pay-virtual  -- 针对虚拟货币支付的一些操作封装
|   |-- ballcat-extend-pay-wx   -- 针对微信支付的一些操作封装
|   `-- ballcat-extend-redis-module  -- redis module 的扩展功能(暂时只有布隆过滤器)
|-- ballcat-starters
|   |-- ballcat-spring-boot-starter-datascope -- 数据权限控制
|   |-- ballcat-spring-boot-starter-dingtalk -- 钉钉集成工具
|   |-- ballcat-spring-boot-starter-easyexcel -- 通过注解快速导入导出excle(easyexcel)
|   |-- ballcat-spring-boot-starter-i18n  -- 国际化方案
|   |-- ballcat-spring-boot-starter-job   -- 定时任务集成(目前仅xxl-job)
|   |-- ballcat-spring-boot-starter-kafka  -- 消息队列 kafka 集成
|   |-- ballcat-spring-boot-starter-log   -- 访问日志,操作日志,TraceId注入
|   |-- ballcat-spring-boot-starter-mail  -- 邮件发送
|   |-- ballcat-spring-boot-starter-oss   -- 对象存储(所有支持 AWS S3 协议的云存储,如阿里云,七牛云,腾讯云)
|   |-- ballcat-spring-boot-starter-pay   -- 支付相关
|   |-- ballcat-spring-boot-starter-redis  -- 提供注解使用 redis, 分布式锁,防击穿,全局key前缀等功能
|   |-- ballcat-spring-boot-starter-sms   -- 短信接入 starter
|   |-- ballcat-spring-boot-starter-swagger  -- swagger文档配置(提供无注册中心的文档聚合方案)
|   |-- ballcat-spring-boot-starter-websocket -- 基于 common-websocket 的自动配置
|   `-- ballcat-spring-boot-starter-xss   -- xss 防注入相关

快速上手

环境准备

开始之前,请先确保您已经配置好以下环境

名称

版本

JDK

1.8

MySQL

5.7.8 +

Redis

3.2 +

node

10.0 +

npm

6.0 +

另:请在您的开发工具中安装好 Lombok 插件,Lombok 的使用参看其 官方文档

最新版本的 Idea 中已经自带了 Lombok 插件

数据库配置

  • 版本:mysql5.7.8+
  • 默认字符集:utf8mb4
  • 默认排序规则:utf8mb4_general_ci

按下面顺序依次执行 ballcat/docs 目录下的数据库脚本:

代码语言:javascript
复制
# 建库语句
scheme.sql
# 核心库
ballcat.sql

# 国际化相关 SQL, 无需国际化功能则不用执行此处代码
ballcat-i18n.sql

配置本地 hosts

建议使用 switchHost 软件管理 hosts 配置!

也可直接修改本地 host 文件: windows 系统下 host 文件位于C:\Windows\System32\drivers\etc\hosts

新增如下 host:

代码语言:javascript
复制
127.0.0.1 ballcat-mysql
127.0.0.1 ballcat-redis
127.0.0.1 ballcat-admin

其中 127.0.0.1 按需替换成开发环境 ip

服务端准备

代码下载
代码语言:javascript
复制
git clone https://github.com/ballcat-projects/ballcat-boot.git
项目启动

直接在开发工具中启动 SpringBoot 的启动类 AdminApplication 即可

前端准备

代码下载
代码语言:javascript
复制
git clone https://github.com/ballcat-projects/ballcat-ui-vue.git
依赖安装

安装项目依赖,使用 yarn 或 npm 都可以

代码语言:javascript
复制
# 安装依赖
yarn install
----- 或者 --------
# 安装依赖
npm install
项目启动

打开命令行进入项目根目录,或 在 IDE 提供的命令行工具中执行

代码语言:javascript
复制
# 启动服务
yarn serve
----- 或者 -----
# 启动服务
npm run serve

访问项目

默认前端项目路径:http://localhost:8000/

默认用户名密码:admin / a123456

< END >

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaGuide 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 技术栈
  • 项目演示
    • 后台管理
      • 代码生成器
      • 业务模块
      • 功能模块
      • 快速上手
        • 环境准备
          • 数据库配置
            • 配置本地 hosts
              • 服务端准备
                • 代码下载
                • 项目启动
              • 前端准备
                • 代码下载
                • 依赖安装
                • 项目启动
              • 访问项目
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档