1. 程式人生 > >Spring Cloud Alibaba 實戰(二)

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

新增依賴

寫註解

寫配置

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