Spring Cloud Alibaba 實戰(二) – 關於Spring Boot你不可不知道的實情
- 2019 年 10 月 4 日
- 筆記
0 相關源碼
1 什麼是Spring Boot
一個快速開發的腳手架
作用
快速創建獨立的、生產級的基於Spring的應用程式
特性
- 無需部署WAR文件
- 提供starter簡化配置
- 儘可能自動配置Spring以及第三方庫
- 提供「生產就緒」功能,例如指標、健康檢查、外部配置等
- 無程式碼生成&無XML
2 編寫一個Spring Boot應用
2.1 需求
- 整合Spring MVC
- /test路徑(端點)
2.2 使用Spring Initializr快速創建Spring Boot應用
- 編寫測試程式碼
- 運行輸出
也可以使用
- mvn clean install確保打包成功
- java -jar 運行程式
3 組成分析
- pom.xml
- 配置文件
- static目錄 存放靜態文件
- template目錄 存放模板文件,已過時
4 開發利器
添加依賴
- pom.xml中的依賴實例
- 官方支援依賴列表
寫註解
寫配置
5 Spring Boot Actuator
什麼是Spring Boot Actuator
整合
- 添加依賴
- 啟動應用
- 打開鏈接
健康資訊
健康資訊可以檢查應用的運行狀態,它經常被監控軟體用來提醒人們生產環境是否存在問題。health端點暴露的默認資訊取決於端點是如何被訪問的。對於一個非安全,未認證的連接只返回一個簡單的'status'資訊。對於一個安全或認證過的連接其他詳細資訊也會展示
Spring Boot包含很多自動配置的HealthIndicators,你也可以寫自己的。
自動配置的HealthIndicators
Spring Boot在合適的時候會自動配置以下HealthIndicators:
- 下表顯示了內置狀態的默認狀態映射:
- 讓我們配置一下health節點,並重啟應用
- 可看到對於磁碟的監控資訊
應用資訊
應用資訊會暴露所有InfoContributor beans收集的各種資訊,Spring Boot包含很多自動配置的InfoContributors,你也可以編寫自己的實現。
自動配置的InfoContributors
Spring Boot會在合適的時候自動配置以下InfoContributors:
注 使用management.info.defaults.enabled屬性可禁用以上所有InfoContributors。
自定義應用info資訊
通過設置Spring屬性info.*,你可以定義info端點暴露的數據。所有在info關鍵字下的Environment屬性都將被自動暴露,例如,你可以將以下配置添加到application.properties:
info.app.encoding=UTF-8 info.app.java.source=1.8 info.app.java.target=1.8
注 你可以在構建時擴展info屬性,而不是硬編碼這些值。假設使用Maven,你可以按以下配置重寫示例:
[email protected]@ [email protected]@ [email protected]@
Git提交資訊
info端點的另一個有用特性是,在項目構建完成後發布git源碼倉庫的狀態資訊。如果GitProperties bean可用,Spring Boot將暴露git.branch,git.commit.id和git.commit.time屬性。
注 如果classpath根目錄存在git.properties文件,Spring Boot將自動配置GitProperties bean。查看Generate git information獲取更多詳細資訊。
使用management.info.git.mode屬性可展示全部git資訊(比如git.properties全部內容):
management.info.git.mode=full
構建資訊
如果BuildProperties bean存在,info端點也會發布你的構建資訊。
注 如果classpath下存在META-INF/build-info.properties文件,Spring Boot將自動構建BuildProperties bean。Maven和Gradle都能產生該文件
- 配置info
- 啟動觀察輸出資訊
- SpringBoot支援很多端點,除了默認顯示的幾個,還可以激活暴露所有端點
- 如果只想暴露某個端點也是可以的
- 查看JVM最大記憶體
6 Spring Boot配置管理
yml配置
- 注意縮進同一與冒號左右的空格
- 注意與properties文件的不同
配置管理的各種姿勢
配置管理常用方式
- 配置文件
- 環境變數
- 外部配置文件 會讀取和jar文件相同路徑下的配置文件,且優先順序高於jar配置
- 命令行參數
盡量保持配置最簡單且統一,規避優先順序衝突問題!
7 Profile
不同環境不同配置
使用
- yml配置文件
- 添加參數並啟動程式
- 查看端點以確認資訊
- 那麼如果不指定參數呢,又運行的何種環境呢,讓我們來看一下:
- 默認是default,難道我非要將dev環境改為default才可以使用默認配置?顯然SpringBoot另闢蹊徑:
如果不是yml文件,而是用properties配置呢
- 指定參數
- 默認dev
- 注意先將啟動參數prod關閉,避免配置優先順序衝突!
8 總結
- 使用Spring Initializr快速創建應用
- 應用組成分析
- 開發三部曲
- Actuator
- 配置管理
- Profile