## 運行環境準備
> 具體安裝問題自行百度
- [JDK 8+](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
- [MySQL 5.7+](https://dev.mysql.com/downloads/installer)
- [Redis](https://github.com/tporadowski/redis/releases)
- [Maven](https://github.com/Exrick/xmall/blob/master/study/Maven.md)
- [Elasticsearch 7.10.0](https://www.elastic.co/cn/downloads/elasticsearch)(根據配置可選,默認不需要)
## 開發環境
- [IDEA](https://www.jetbrains.com/idea/download/#section=windows)
- 開發插件
- [Lombok](https://jingyan.baidu.com/article/0a52e3f4e53ca1bf63ed725c.html):高效開發必備【必須】
- [阿里JAVA開發規約插件](https://github.com/alibaba/p3c):統一開發規范必需【建議】
- [JRebel](https://github.com/Exrick/xmall/blob/master/study/JRebel.md):秒級熱更新神器必備 【推薦】
## 導入SQl文件
- MySQL數據庫新建`xboot`數據庫,導入xboot.sql文件
> 若啟動項目后報錯找不到Quartz相關表時請設置數據庫忽略大小寫或重新導入quartz.sql
## 配置文件修改
- [application.yml](https://github.com/Exrick/x-boot/blob/master/src/main/resources/application.yml) 中已有詳細注釋,主要修改數據庫以及Redis配置
- 配置文件可使用Jasypt加密,可到`cn.exrick.xboot.common`包中找到 JasyptUtil 工具類生成加解密結果(非必需,可明文)
- 若運行報錯:`...you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine`
因配置文件加解密所需,解決方案一:配置先全部直接使用明文。方案二:請更新JDK為對應版本的最新版,或去Oracle官網下載相應的JCE包
> 開源版本所有配置只需在這里修改,完整版部分配置可在“系統配置”菜單中動態修改
## 使用的第三方服務
- [七牛云對象存儲](https://www.qiniu.com):免費10G文件存儲,文件上傳所需
- 使用對象存儲產品創建一個對象存儲空間,點擊右上角頭像-秘鑰管理可獲取秘鑰,將相關配置填入配置文件即可
- [騰訊位置服務](https://lbs.qq.com/webservice_v1/guide-ip.html):免費IP信息接口
- 登陸后進入[控制臺](https://lbs.qq.com/dev/console/key/manage) ,創建key填入配置文件即可
<img src="https://ooo.0o0.ooo/2019/11/08/4kfbQBHdoA2YeqF.png" width=500/>
<img src="https://ooo.0o0.ooo/2019/11/08/yjoKnNPftT2JUmO.png" width=500/>
## 編譯器中啟動
- 使用IDEA導入該后端Maven項目
- 進入pom.xml文件后右上角點擊Load Maven Changes按鈕下載依賴包

- 編譯器建議勾選自動構建編譯
<img src="https://ooo.0o0.ooo/2019/04/11/5caead69a35ce.png" width="600px"/>
- 普通運行,單體版默認已添加SpringBoot官方工具Devtools熱更新依賴,修改代碼后自動重啟整個項目
- 右鍵 `XbootApplication.java` 運行或使用編譯器菜單欄三角形運行按鈕Run即可
- JRebel開發神器啟動運行,修改代碼后秒級熱更新【推薦】
- 左下角勾選上項目模塊后,會生成rebel.xml配置文件,可在其中修改監聽編譯文件路徑,一旦發現編譯文件變化即觸發熱更新
<img src="https://ooo.0o0.ooo/2019/04/11/5caeb81c7e989.png" width="600px" />
- 使用JRebel插件啟動即可
<img src="https://ooo.0o0.ooo/2019/04/11/5caeb9143d8b2.png" />
- 若修改代碼后熱更新未生效,請手動點擊編譯按鈕或編譯器中配置更新策略
<img src="https://ooo.0o0.ooo/2020/04/27/mLtDBlNpuAkh3sn.png" width="600px"/>
## 無需編譯器啟動
- 在有`pom.xml`文件即根目下執行命令 `mvn spring-boot:run`即可
## 訪問測試
- 默認端口8888 訪問接口文檔`http://localhost:8888/doc.html`說明啟動成功
- 管理員賬密 admin 123456
- 前言&版本說明
- 概念
- XBoot 是什么?
- 系統架構
- 主要使用的開源組件
- 角色控制訪問權限(RBAC)
- 用戶手冊
- 系統配置
- 工作流使用配置
- 定時任務調度
- 智能助手客服機器人
- 項目本地運行
- 后端運行
- 前端運行
- 項目結構說明
- 附:使用Oracle等數據庫
- 模塊化版本
- 后端開發指南
- 基本開發指南
- 前后端數據交互標準
- 工具類及數據權限
- 代碼生成器-30秒搞定CRUD
- 增刪改查CRUD
- 日志類型注解擴展
- 邏輯刪除
- 各驗證碼使用及配置
- 接口文檔使用及認證
- 前端開發指南
- 基本開發指南
- 主題/Logo/首頁等配置
- 路由菜單配置
- 多語言國際化配置
- 自定義圖標icon
- 工具類及數據獲取
- 其他說明
- 完整版開發指南
- 前端Vue代碼生成器
- Activiti工作流
- 單點登錄配置
- 智能助手/客服機器人
- MinIO對象存儲服務搭建
- 第三方社交賬號配置
- 短信開發/站內消息/郵件
- Vaptcha驗證碼
- 禁用詞使用
- 前端移除CDN
- 其他說明
- 開放平臺及單點登錄
- 開放平臺使用指南
- Web接入開發流程
- 單點登錄開發指南
- 微信小程序端開發指南
- 項目導入與開發必讀
- 業務組件
- 產品組件(小)
- 產品組件(大)
- 優惠券組件
- 評論列表組件
- 紅包組件
- 推薦商品組件
- 頁面設計
- 商品詳情頁及SKU設計
- 通用方法工具類說明
- 開發經驗與踩坑分享
- Uniapp端開發指南
- APP后端開發指南
- Uniapp前端開發指南
- 開發新功能示例
- 后端開發新模塊
- 前端開發新頁面
- 測試
- SonarQube代碼質量管理
- TestNG單元測試
- ExtentReports測試報告
- Selenuim自動化Web測試
- Appuim自動化App測試
- JMeter壓測性能測試
- 部署
- Spring Boot配置
- 快速部署
- 后端部署
- 前端部署
- 前端部署優化
- Docker容器化部署
- 服務器配置
- 持續集成
- GitLab
- GitLab CI
- XBoot 腳本參考
- Jenkins
- Jenkins安裝
- XBoot CI參考
- DevOps環境搭建
- 組件安裝列表
- 開發設計規范
- 分支管理
- 數據庫設計規范
- Redis使用規范
- Java基礎開發規范
- Rest API規范
- 項目結構規范
- 前端開發規范
- 前端設計規范
- 項目搭建分享
- 后端相關
- SpringBoot 2.x區別總結
- Spring Security整合JWT
- Spring Security動態權限管理
- Spring Boot 2.x整合Quartz
- Spring Boot 2.x整合Websocket
- Spring Boot 2.x整合Activiti工作流以及模型設計器
- Spring Boot + Security全局跨域配置
- 前端相關
- axios請求封裝 統一異常處理
- 動態路由菜單加載
- 多維度控制權限至按鈕顯示
- 發送消息圖標紅點實時顯示
- 動態組件單頁操作
- XBoot助你【告別996】
- 業務開發踩坑
- 你會用開發神器IDEA嗎
- Lombok你知道多少
- 你還在手動校驗參數嗎
- 你真的會用JPA嗎
- Lamda表達式
- Stream流式API
- 告別資源關閉
- Optional避免null
- 谷歌Guava工具包
- 線程池
- 其他小經驗技巧
- 更新日志及步驟
- 常見問題