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 開發利器

添加依賴

寫註解

寫配置

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

參考

Spring Boot官方文檔