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官方文檔