Spring Cloud Alibaba 實戰(二)
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