https://www.oschina.net/news/120461/zuihou-admin-boot-2-7-0-released?utm_source=oschina-chrome-extension
2.7.0版本更新詳情:
- fix: 修復任務啟動后,更新任務觸發時間,不生效 fix:29
- fix: redis持久化策略不影響全局配置
- fix: 修復uid模塊啟動可能報錯的bug
- feat: IgnoreTokenProperties 重命名為 IgnoreProperties,並將原來的配置`ignore.token.url`改成`zuihou.ignore.xxx`
- feat: 廢棄無用的單元測試
- feat: apache的StringUtils替換為hutool的StrUtil
- feat: xss-starter相關功能支持通過配置文件配置
- feat: SysLog注解支持獲取當前線程上下文中的參數. 用法 #threadLocal.name
- feat: 數據注入代碼結構、注釋優化
- feat: 數據注入支持忽略注入指定字段
- feat: 代碼注釋完善若干、代碼邏輯優化若干、修復bug若干
- feat: 接入SkyWalking
租戶模式:
租戶模式 | 描述 | 優點 | 缺點 | 分布式事務 |
NONE(非租戶模式) | 沒有租戶 | 簡單、適合獨立系統 | 缺少租戶系統的便利性 | 支持 |
COLUMN(字段模式) | 租戶共用一個數據庫,在業務表中增加字段來區分 | 簡單、不復雜、開發無感知 | 數據隔離性差、安全性差、數據備份和恢復困難 | 支持 |
SCHEMA(獨立schema) | 每個租戶獨立一個 數據庫(schema),執行sql時,動態在表名前增加schema | 簡單、開發無感知、數據隔離性好 | 配置文件中必須配置數據庫的root賬號、不支持復雜sql和 sql嵌套自定義函數 | 支持 |
DATASOURCE(獨立數據源) | 每個租戶獨立一個 數據庫(數據源),執行代碼時,動態切換數據源 | 可獨立部署數據庫,數據隔離性好、擴展性高、故障影響小 | 相對復雜、開發需要注意切換數據源時的事務問題、需要較多的數據庫 | 支持 |
視頻清單: (視頻獲取地址)
簡介:
基於SpringBoot(2.2.9.RELEASE) 的 SaaS型微服務腳手架,具備用戶管理、資源權限管理、網關統一鑒權、Xss防跨站攻擊、自動代碼生成、多存儲系統、分布式事務、分布式定時任務等多個模塊,支持多業務系統並行開發,支持多服務並行開發,可以作為后端服務的開發腳手架。代碼簡潔,架構清晰,非常適合學習使用。核心技術采用Mybatis、SpringBoot、JWT Token、RabbitMQ、FastDFS等主要框架和中間件。
希望能努力打造一套從 SaaS基礎框架 - 單體架構 - 自動化部署 - 系統監測 的解決方案。本項目旨在實現基礎能力,不涉及具體業務。
功能點介紹:
接口鑒權:
通過JWT的方式來加強服務之間調度的權限驗證,保證內部服務的安全性。
監控:
利用Spring Boot Admin 來監控各個獨立Service的運行狀態;利用turbine來實時查看接口的運行狀態和調用頻率
數據權限:
利用基於Mybatis的DataScopeInterceptor攔截器實現了簡單的數據權限
SaaS的無感解決方案:
使用Mybatis攔截器實現對所有SQL的攔截,修改默認的Schema,從而實現多租戶數據隔離的目的。
二級緩存:
采用J2Cache操作緩存,第一級緩存使用內存(Caffeine),第二級緩存使用 Redis。 由於大量的緩存讀取會導致 L2 的網絡成為整個系統的瓶頸,因此 L1 的目標是降低對 L2 的讀取次數。 該緩存框架主要用於集群環境中。單機也可使用,用於避免應用重啟導致的緩存冷啟動后對后端業務的沖擊。
優雅的Bean轉換:
采用Dozer組件來對 DTO、DO、PO等對象的優化轉換
前后端統一表單驗證:
嚴謹的表單驗證通常需要 前端+后端同時驗證, 但傳統的項目,均只能前后端各做一次檢驗, 后期規則變更,又得前后端同時修改。 故在hibernate-validator的基礎上封裝了zuihou-validator-starter起步依賴,提供一個通用接口,可以獲取需要校驗表單的規則,然后前端使用后端返回的規則, 以后若規則改變,只需要后端修改即可。
防跨站腳本攻擊(XSS):
- 通過過濾器對所有請求中的 表單參數 進行過濾
- 通過Json反序列化器實現對所有 application/json 類型的參數 進行過濾
當前用戶信息注入器:
通過注解實現用戶身份注入
在線API:
由於原生swagger-ui某些功能支持不夠友好,故采用了國內開源的 knife4j ,並制作了stater,方便springboot用戶使用。
代碼生成器:
基於Mybatis-plus-generator自定義了一套代碼生成器, 通過配置數據庫字段的注釋,自動生成枚舉類、數據字典注解、SaveDTO、UpdateDTO、表單驗證規則注解、Swagger注解等。
定時任務調度器:
基於xxl-jobs進行了功能增強。(如:指定時間發送任務、執行器和調度器合並項目、多數據源)
大文件/斷點/分片續傳:
前端采用webupload.js、后端采用NIO實現了大文件斷點分片續傳,啟動Eureka、Zuul、File服務后,直接打開docs/chunkUploadDemo/demo.html即可進行測試。 經測試,本地限制堆棧最大內存128M啟動File服務,5分鍾內能成功上傳4.6G+的大文件,正式服耗時則會受到用戶帶寬和服務器帶寬的影響,時間比較長。
分布式事務:
集成了阿里的分布式事務中間件:seata,以 高效 並且對業務 0侵入 的方式,解決 微服務 場景下面臨的分布式事務問題。
關聯數據自動注入:
用於解決跨表、跨庫、跨服務分頁數據的屬性或單個對象的屬性 回顯關聯數據之痛, 支持對靜態數據屬性(數據字典)、動態主鍵數據進行自動注入。
項目代碼地址
項目 | gitee | github | 備注 |
微服務項目 | https://gitee.com/zuihou111/zuihou-admin-cloud | https://github.com/zuihou/zuihou-admin-cloud | SpringCloud 版本后端代碼 |
單體項目 | https://gitee.com/zuihou111/zuihou-admin-boot | https://github.com/zuihou/zuihou-admin-boot | SpringBoot 版本后端代碼 |
租戶后台 | https://gitee.com/zuihou111/zuihou-ui | https://github.com/zuihou/zuihou-ui | | 給客戶使用的前端 |
開發&運營后台 | https://gitee.com/zuihou111/zuihou-admin-ui | https://github.com/zuihou/zuihou-admin-ui | 給公司內部開發&運營&運維等人員使用 |
代碼生成器 | https://gitee.com/zuihou111/zuihou-generator | https://github.com/zuihou/zuihou-generator | 開發人員使用 |
核心工具包 | https://gitee.com/zuihou111/zuihou-commons | https://github.com/zuihou/zuihou-commons | 核心工具包 |
演示地址 (演示賬號沒有寫權限,只能查詢)
項目 | 演示地址 | 管理員賬號 | 普通賬號 |
租戶后台 | http://tangyh.top:10000/zuihou-ui | zuihou/zuihou | test/zuiou |
開發&運營后台 | http://tangyh.top:180/zuihou-admin-ui | demoAdmin/zuihou | 無 |