天天看點

來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!

中午好啊,我是 Guide!

今天給大家推薦一個非常不錯的快速項目腳手架!拿來學習或者接私活都非常巴适!

這個項目我其實很早就有關注。5 月 16 日的時候,我就已經将其收錄進了CodingDocs/awesome-java (非常棒的 Java 開源項目集合)中的快速開發腳手架這一子產品中。

awesome-java 位址 :
  • Github :https://github.com/CodingDocs/awesome-java
  • Gitee :https://gitee.com/SnailClimb/awesome-java(Github 無法通路或者通路速度比較慢的小夥伴可以看碼雲上的對應内容)

昨天才聯系到這個項目的作者,想認識一下。

來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!

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

簡介

來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!

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/
來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!

技術棧

  • 後端 :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/

示範效果:

來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!
來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!
來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!
來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!

代碼生成器

代碼生成器提供了線上編輯模闆的功能,以及多資料源的支援。

隻需啟動一個代碼生成器服務放在測試服,所有項目需要生成代碼時都可以複用此生成器,減少了頻繁切換項目啟動生成器的繁瑣。

示範位址:

http://codegen.ballcat.cn/

示範效果:

來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!

業務子產品

BallCat 為背景管理的一些基本需求提供了以下五個業務子產品,使用者可以按需引入:

  • ballcat-auth(授權子產品) :用于支撐 OAuth2 的授權伺服器,內建了登入圖像驗證碼,登入 AES 密碼解密過濾器等相關功能。目前使用 Spring-Security-OAuth2 作為基礎,後續将遷移到 spring-authorization-server 項目。
  • ballcat-system(系統子產品) :提供了使用者管理、角色管理、菜單管理、組織架構、字典管理、系統配置等這些背景管理系統中不可或缺的核心功能。
  • ballcat-log(日志子產品) :提供了登入日志、記錄檔、通路日志等日志記錄功能,提供了 TraceId,可串聯一次請求中的所有日志資訊。日志預設存儲位置在 mysql 中,使用者可以按需定制日志處理邏輯。
  • ballcat-i18n(國際化子產品) :提供了基于資料庫的國際化資訊配置存儲方案,提供 local + redis 雙重緩存處理,提升國際化處理效率。
  • ballcat-notify(通知子產品) :目前提供了系統公告的能力,下個版本将會新增通知相關的功能。
來看看這個超好用的項目腳手架吧!5分鐘搭建一個Spring Boot 前後端分離系統!

BallCat 項目子產品結構

功能子產品

功能子產品和業務無關,非 ballcat 項目也可以引入這些子產品獲得功能增強,使用者按照實際業務需求選擇子產品進行內建。

包括但不限于以下這些功能 :

  • 資料權限控制,在 orm 層實作,基于 Jsqparse 解析 Sql,進行權限範圍的 sql 注入
  • 國際化功能,不僅支援 spring 原生的檔案配置形式,還可以自定義動态加載國際化配置
  • 注解使用 redis 緩存、分布式鎖,防擊穿,全局 key 字首等功能
  • 注解快速實作 excel 導入導出功能
  • 支付功能:包括支付寶、微信、USDT 虛拟貨币等
  • 基于 S3 協定的對象存儲封裝,友善一套代碼相容大部分雲平台,如阿裡雲,七牛雲,騰訊雲

目前提供的功能子產品清單

|-- 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

目錄下的資料庫腳本:

# 建庫語句
scheme.sql
# 核心庫
ballcat.sql

# 國際化相關 SQL, 無需國際化功能則不用執行此處代碼
ballcat-i18n.sql
           

複制

配置本地 hosts

建議使用 switchHost 軟體管理 hosts 配置!

也可直接修改本地 host 檔案: windows 系統下 host 檔案位于

C:\Windows\System32\drivers\etc\hosts

新增如下 host:

127.0.0.1 ballcat-mysql
127.0.0.1 ballcat-redis
127.0.0.1 ballcat-admin
           

複制

其中

127.0.0.1

按需替換成開發環境 ip

服務端準備

代碼下載下傳

git clone https://github.com/ballcat-projects/ballcat-boot.git
           

複制

項目啟動

直接在開發工具中啟動 SpringBoot 的啟動類

AdminApplication

即可

前端準備

代碼下載下傳

git clone https://github.com/ballcat-projects/ballcat-ui-vue.git
           

複制

依賴安裝

安裝項目依賴,使用 yarn 或 npm 都可以

# 安裝依賴
yarn install
----- 或者 --------
# 安裝依賴
npm install
           

複制

項目啟動

打開指令行進入項目根目錄,或 在 IDE 提供的指令行工具中執行

# 啟動服務
yarn serve
----- 或者 -----
# 啟動服務
npm run serve
           

複制

通路項目

預設前端項目路徑:http://localhost:8000/

預設使用者名密碼:admin / a123456

< END >