javascript
基于SpringBoot 适合学习的开源社区平台
今天TJ君要給大家分享的是一個集合各種技術的開源社區平臺,Echo
平臺使用的主要技術有:SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch + Spring Security,常見社區平臺中應有的帖子、評論、私信、系統通知、點贊、關注、搜索、用戶設置、數據統計等模塊都可以支持實現。
前后端主要用到的技術棧有:
-
前端
-
Thymeleaf
-
Bootstrap 4.x
-
Jquery
-
Ajax
-
-
后端
-
Spring
-
Spring Boot 2.1.5 RELEASE
-
Spring MVC
-
ORM:MyBatis
-
數據庫:MySQL 5.7
-
分布式緩存:Redis
-
本地緩存:Caffeine
-
消息隊列:Kafka 2.13-2.7.0
-
搜索引擎:Elasticsearch 6.4.3
-
安全:Spring Security
-
郵件任務:Spring Mail
-
分布式定時任務:Spring Quartz
-
日志:SLF4J(日志接口) + Logback(日志實現)
-
這些技術棧與功能列表的詳細對應關系可從下圖看出:
TJ君簡單看了一下,如果要更進一步詳細描述平臺已經實現的功能的話,就是:
-
注冊
-
登錄 | 登出
-
動態生成驗證碼
-
記住我
-
-
賬號設置
-
修改頭像
-
修改密碼
-
-
過濾敏感詞
-
前綴樹
-
-
帖子模塊
-
發布帖子(過濾敏感詞)
-
分頁顯示所有的帖子
-
支持按照 “發帖時間” 顯示
-
支持按照 “熱度排行” 顯示(Spring Quartz)
-
-
查看帖子詳情
-
權限管理(Spring Security + Thymeleaf Security)
-
未登錄用戶無法發帖
-
“版主” 可以看到帖子的置頂和加精按鈕并執行相應操作
-
“管理員” 可以看到帖子的刪除按鈕并執行相應操作
-
“普通用戶” 無法看到帖子的置頂、加精、刪除按鈕,也無法執行相應操作
-
-
-
評論模塊
-
發布對帖子的評論(過濾敏感詞)
-
分頁顯示評論
-
發布對評論的回復(過濾敏感詞)
-
權限管理(Spring Security)
-
未登錄用戶無法使用評論功能
-
-
-
私信模塊
-
發送私信(過濾敏感詞)
-
私信列表
-
查詢當前用戶的會話列表
-
每個會話只顯示一條最新的私信
-
支持分頁顯示
-
-
私信詳情
-
查詢某個會話所包含的所有私信
-
訪問私信詳情時,將顯示的私信設為已讀狀態
-
支持分頁顯示
-
-
權限管理(Spring Security)
-
-
統一處理 404 / 500 異常
-
普通請求異常
-
異步請求異常
-
-
統一記錄日志
-
點贊模塊
-
支持對帖子、評論/回復點贊
-
第 1 次點贊,第 2 次取消點贊
-
首頁統計帖子的點贊數量
-
詳情頁統計帖子和評論/回復的點贊數量
-
詳情頁顯示當前登錄用戶的點贊狀態(贊過了則顯示已贊)
-
統計我的獲贊數量
-
權限管理(Spring Security)
-
未登錄用戶無法使用點贊相關功能
-
-
-
關注模塊
-
關注功能
-
取消關注功能
-
統計用戶的關注數和粉絲數
-
我的關注列表(查詢某個用戶關注的人),支持分頁
-
我的粉絲列表(查詢某個用戶的粉絲),支持分頁
-
權限管理(Spring Security)
-
未登錄用戶無法使用關注相關功能
-
-
-
系統通知模塊
-
通知列表
-
顯示評論、點贊、關注三種類型的通知
-
-
通知詳情
-
分頁顯示某一類主題所包含的通知
-
進入某種類型的系統通知詳情,則將該頁的所有未讀的系統通知狀態設置為已讀
-
-
未讀數量
-
分別顯示每種類型的系統通知的未讀數量
-
顯示所有系統通知的未讀數量
-
-
導航欄顯示所有消息的未讀數量(未讀私信 + 未讀系統通知)
-
權限管理(Spring Security)
-
未登錄用戶無法使用系統通知功能
-
-
-
搜索模塊
-
網站數據統計(管理員專屬)
-
獨立訪客 UV
-
支持單日查詢和區間日期查詢
-
-
日活躍用戶 DAU
-
支持單日查詢和區間日期查詢
-
-
權限管理(Spring Security)
-
只有管理員可以查看網站數據統計
-
-
-
優化網站性能
-
處理每次請求時,都要通過攔截器根據登錄憑證查詢用戶信息,訪問的頻率非常高。因此將已成功登錄的用戶信息在緩存 Redis 中保存一段時間,查詢用戶信息的時候優先從緩存中取值;若緩存中沒有該用戶信息,則將其存入緩存;用戶信息變更時清除對應的緩存數據;
-
引入本地緩存 Caffeine,緩存熱帖列表和帖子的總數,避免緩存雪崩(這里面還能再加一層二級緩存 Redis)。
-
本地部署
先確保一下環境都已安裝?Java 8、 MySQL 5.7、 Redis、 Kafka 2.13-2.7.0、 Elasticsearch 6.4.3
然后修改本地配置文件信息:
-
application-develop.properties:
-
MySQL
-
Spring Mail(郵箱需要開啟 SMTP 服務)
-
Kafka:consumer.group-id(該字段見 Kafka 安裝包中的 consumer.proerties,可自行修改, 修改完畢后需要重啟 Kafka)
-
Elasticsearch:cluster-name(該字段見 Elasticsearch 安裝包中的 elasticsearch.yml,可自行修改)
-
七牛云(需要新建一個七牛云的對象存儲空間,用來存放上傳的頭像圖片)
-
-
logback-spring-develop.xml:
-
LOG_PATH:日志存放的位置
-
需要注意的是,每次運行需要打開如下軟件:
-
MySQL
-
Redis
-
Elasticsearch
-
Kafka
另外,還需要建好數據庫 greatecommunity,然后依次運行項目 sql 文件夾下的這幾個 sql 文件建立數據庫表:
同時針對每一個功能模塊,平臺作者還提供了自己的思維導圖,方便用戶理解:
例如注冊功能
登錄登出功能
幾乎每個功能都有,也方便小伙伴們進行理解和學習。
最后看下實際的運行效果:
預祝大家學習愉快~~~項目地址如下:
https://github.com/Veal98/Echo
TJ君將之前發過的各種項目及工具進行了整理,收錄到了GitHub項目,歡迎各位小伙伴光臨Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU
總結
以上是生活随笔為你收集整理的基于SpringBoot 适合学习的开源社区平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache http Server与T
- 下一篇: 大数据重新定义未来,2018 中国大数据