首頁>技術>

一個基於SpringBoot 2 的管理後臺系統,有數十個基於此的商業應用,包含了使用者管理,組織機構管理,角色管理,功能點管理,選單管理,許可權分配,資料許可權分配,程式碼生成等功能 相比其他開源的後臺開發平臺腳手架,SpringBoot-Plus 使用簡單,可以輕易完成中型,大型系統開發。同時技術棧較為簡單

如何判斷一個開源開發平臺適合自己

要明白單體系統,系統拆分,微服務三個不同構建開發平臺方式,plus支援單體和系統拆分,一般而言,後臺管理系統適合單體和系統拆分。微服務並不適合系統管理,以我知道的網際網路大廠,央企後臺管理系統,還是以前倆個為多你需要的是技術框架還是開發平臺,技術框架就是技術堆砌,開發平臺必須具備一定複雜基礎業務功能看許可權模型,支援功能許可權和資料許可權。plus具備強大的功能許可權和資料許可權,且可以擴充套件n種資料許可權看使用者是否能屬於多個部門,使用者兼職情況很常見看資料字典是否支援級聯,資料字典級聯太常見了,平臺需要提供資料和前端的支援。puls系統支援看程式碼生成是否支援預覽,為什麼要預覽,因為生成會覆蓋,預覽可以修改已經生成的程式碼

Plus系統是一個使用簡單,功能較為複雜的開源系統,已經數十家商業公司採用

系統基於Spring Boot2.1技術,前端採用了Layui2.4。資料庫以MySQL/Oracle/Postgres/SQLServer為例項,理論上是跨資料庫平臺.

1 使用說明

1.1 安裝說明

建議在徹底熟悉plus系統之前,先暫時不要修改其他配置選項,免得系統無法訪問

本系統基於Spring Boot 2 ,因此請務必使用JDK8,且開啟編譯選項parameters(點選了解parameters), 並重新編譯工程,如果你沒有使用Java8的 parameters 特性,系統不能正常使用

從Git上獲取程式碼後,通過IDE匯入此Maven工程,包含倆個子工程

admin-core ,核心包,包含了快取,資料許可權,公用的JS和HTML頁面。admin-console, 系統管理功能,包含了使用者,組織機構,角色,許可權,資料許可權,程式碼生成等管理功能

com.ibeetl.admin.CosonleApplication 是系統啟動類,在admin-console包下,在執行這個之前,還需要初始化資料庫,位於doc/starter-mysql.sql,目前只提供mysql, oracle, postgresql指令碼。理論上支援所有資料庫

還需要修改SpringBoot配置檔案application.properties,修改你的資料庫地址和訪問使用者

spring.datasource.baseDataSource.url=jdbc:mysql://127.0.0.1:3306/starter?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false&useInformationSchema=true

spring.datasource.baseDataSource.username=root

spring.datasource.baseDataSource.password=123456

spring.datasource.baseDataSource.driver-class-name=com.mysql.cj.jdbc.Driver

執行CosonleApplication,然後訪問http://127.0.0.1:8080/ 輸入admin/123456 則可以直接登入進入管理系統

1.2 建立子系統

SpringBoot-plus 是一個適合大系統拆分成小系統的架構,或者是一個微服務系統,因此,如果你需要建立自己的業務系統,比如,一個CMS子系統,建議你不要在SpringBoot-Plus 新增程式碼,應該是新建立一個maven工程,依賴admin-core,或者依賴admin-console(如果你有後臺管理需求,通常都有,但不是必須的)

建立子系統,可以進入程式碼生成>子系統生成, 輸入maven專案路徑,還有包名,就可以直接生成一個可執行的基於SpringBoot-Plus 的子系統,所有程式碼可以在個專案裡些完成,直接執行MainApplication,

@SpringBootApplication @EnableCaching @ComponentScan(basePackages= {"com.corp.xxx","com.ibeetl.admin"}) public class MainApplication extends SpringBootServletInitializer implements WebApplicationInitializer { public static void main(String[] args) { SpringApplication.run(MainApplication.class, args); } } 

子系統包含了admin-core和admin-console, 因此你可以直接在子系統裡使用core和console提供的所有功能,通過子系統的console功能的程式碼生成來完成進一步開發

子系統可以單獨執行和維護,也可以整合到nginx後構成一個龐大的企業應用系統

1.2.1 配置子系統

子系統不需要做任何配置即可在IDE裡直接執行,如果你想打包jar方式執行,則需要新增

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

如果你想打包成war放到tomcat下執行,需要修改maven打包為war

<packaging>war</packaging>

1.2.2 菜單系統

系統預設提供三種類型選單

系統級選單,出現在頁面頂部,表示一個子系統導航選單,出現在頁面左邊,點選導航將開啟其下所有選單選單,點開選單將定位到頁面,選單必須關聯到一個功能點。

建議新建立一個子系統來放置新功能

SpringPlus-Boot 並非以選單或者按鈕來組織整個系統,而是以功能點來組織整個系統提供的功能。如果要使得選單生效,你必須要先常見一個功能點並且功能點有一個訪問地址,然後將此選單關聯到這個功能點

SpringBoot-Plus 先建立功能點是個好習慣,功能點被組織成一顆樹,代表了系統應該提供功能的功能,我們看程式碼就會看到,功能點跟選單,跟許可權,和資料許可權都有密切關係

1.2.2 新增程式碼

可以參考1.3業務程式碼生成生成初始化的程式碼,業務程式碼生成了14個檔案,包含前後端所有程式碼,可以通過生成來了解程式碼習作規範

1.3 業務程式碼生成

在介紹如何利用Plus開發系統之前,先介紹程式碼生成功能,此功能可以生成前後端程式碼總計14個檔案,你可以通過預覽功能了解如何開發這個系統

程式碼生成針對表進行程式碼生成,包括JS,JAVA,SQL和HTML,可以通過預覽功能直接預覽。在生成程式碼到本地前,有些引數需要修改,否則,程式碼生成後顯示的都是英文

顯示欄位 : 當此實體顯示在任何地方的時候,能代表此實體的名稱,比如使用者名稱,組織機構名變數名:可以自己設定一個較短的名字,此變數名會用於前後端的變數urlBase:你規劃的子系統,最後訪問路徑是urlBase+變數名字system: 存放sql目錄的的名稱

其他修改的地方有

是否包含匯入匯出,如果選擇,則會生成匯入匯出的程式碼,匯入匯出模板則需要參考已有功能(比如資料字典)來完成

是否包含附件管理,如果選擇,則業務物件可以關聯一組附件,比如客戶關聯一組附件,或者申請資訊關聯一組附件。

欄位資訊的顯示名字,這個用於前端列表,表單的顯示,應當輸入中文名字

作為搜尋,可以勾選幾個搜尋條件,系統自動生成一個搜尋配置類

如果欄位關聯資料字典,那麼設定一個數據字典,這樣,生成的介面將會變成一個下拉列表

1.3.1 前端程式碼

前端程式碼採用了layui的JS框架,使用了按需載入的方式,文件參考 http://www.layui.com/doc/base/infrastructure.html.

index.js: 系統入口JS,包含了查詢和表格add.js : 新增操作的所有JSedit.js: 編輯操作的所有JSdel.js: 刪除操作的所有JS

基礎JS

Common.js: 封裝了通常JS功能,如jquery的post方法,layui的視窗方法Lib.js 封裝了業務相關方法,如submitForm,loadOrgPanel等方法

1.3.2 HTML程式碼

頁面採用layui,文件參考 http://www.layui.com/demo/

模板語言了使用Beetl,文件參考ibeetl.com

index.html: 功能首頁add.html: 新增首頁edit.html: 編輯操作首頁

採用layui的好處是自帶了頁面和元件還有JS的管理,能完成大多數業務需求

基礎UI元件:

orgInput.tag.html 組織機構輸入框simpleDictSelect.tag.html 字典下拉列表simpleDataSelect.tag 包含key-value的下拉列表searchForm.tag.html 通用搜索表單submitButtons.tag.html 提交按鈕accessButton.tag.html 普通按鈕(含許可權)attachment.tag.html 附件管理元件....2 單體系統,系統拆分和微服務

plus是一個適合單體系統,系統拆分的java快速開發平臺,也可以經過改造成微服務平臺(以前做一個版本,但覺得plus應該聚焦系統核心,而不是簡單堆砌功能,所以放棄了)

以下是單體系統,小系統,和微服務的區別

單體系統是一種常見系統設計方式,也是這十幾年年來最主要的設計方式。單體系統的所有功能都在一個工程裡,打成一個war包,部署。這樣有如下明顯好處

單體系統開發方式簡單,我們從剛開始學習程式設計,就是完成的單體系統,開發人員只要集中精力開發當前工程容易修改,如果需要修改任何功能,都非常方便,只需要修改一個工程範圍的程式碼測試簡單,單體系統測試不需要考慮別的系統,避免本書下冊要提到的各種REST,MQ呼叫部署也很容易:不需要考慮跟別的系統關係,直接打war包部署到Web伺服器即可效能容易擴充套件,可以通過Nginx,把一個應用部署到多個伺服器上。

隨著業務發展,重構,單體系統越來越多,在開發一個龐大的單體系統的時候,就會有如下弊病

單體系統龐大,越來越難理解單體系統,微小的改動牽涉面廣泛導致開發小組小心謹慎,開發速度會越來越慢。另外,啟動一個龐大的單體系統,可能需要3分鐘,或者更多時間多個功能在同一個單體系統上開發,導致測試越來越慢,比如,測試必須排期,序列測試單體系統如果想對技術進行更新換代,那代價非常大,如果是個小系統構成,則可以選取一個小系統先做嘗試。單體大系統是幾乎不可能做技術升級的單體系統的所有功能執行在同一個JVM裡,功能會互相影響,比如一個統計上傳word文件的頁碼的功能由於非常消耗CPU,因此,會因為呼叫統計功能,導致整個系統短暫都不可用,出現假死的現象

因此,越來越多的架構師在設計系統的時候,會考慮系統拆分成多個單體小系統甚至是微服務。對於傳統企業應用,拆成小系統更合適,對網際網路系統,使用微服務個更合適,這是因為

傳統IT系統本質上還是會用一個數據庫,而微服務提倡的是一個服務一個數據庫傳統IT系統很少需要呼叫其他模組服務。傳統IT系統通過工作流來串聯其他子系統。而電商類的微服務則是通過RPC等方式進行互動,是一個輕量級協議。傳統IT系統也可以通過SOA,JMS跟其他系統(非子系統)互動,採用重量級協議微服務對系統的基礎設施要求很高,比如微服務治理,彈性庫等等,只要電商系統才有人力物力去做這種事情,而傳統IT系統,及時財大氣粗,也暫時不具備微服務那樣的IT基礎設定

因此,對於大多數傳統IT應用來說,單體拆分小系統在技術上沒有風險,是一個可以立即實施的架構。如下是一個單體系統拆分後的物理架構

對於使用者來說,訪問不同的選單功能,講定位到不同得子系統,提供服務。

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 在 21 世紀該怎樣編譯 Linux 核心