如上2.4中所述,傳統spring工程中工程的初始化過程,bean的生命週期,應用的內部健康狀況均沒法監控,爲了解決這個問題,spring boot提供了Actuator執行器。html
下面具體介紹什麼是Actuator,以及怎麼使用。git
3.1.1. 加入依賴github
加入以下Starter pom:spring
<dependency>數據庫
<groupId>org.springframework.boot</groupId>json
<artifactId>spring-boot-starter-actuator</artifactId>安全
</dependency>app
3.1.2.配置ide
在application.properties配置文件中加入配置:spring-boot
management.security.enabled=false
注:因
Actuator
會將應用內部信息的端點暴露出來,這樣就會產生安全問題,
Spring Boot
默認將
Spring
security
加入了工程,所以默認此配置是
true
,禁用安全以便測試。
3.1.3.啓動
直接Run as JavaApplication啓動便可。
3.1.4 測試
測試結果如上
直接訪問http://localhost:8080/beans便可。
返回的json文檔爲應用內上下文全部的Bean以及相互關係等。
Spring Boot Actuator的關鍵特性是在應用程序裏提供衆多Web端點,經過它們瞭解應用程序運行時的內部情況。有了Actuator,你能夠知道Bean在Spring應用程序上下文裏是如何組裝在一塊兒的,掌握應用程序能夠獲取的環境屬性信息,獲取運行時度量信息的快照等等。
Actuator提供了13個端點:
HTTP方法 路 徑 描 述
GET/autoconfig提供了一份自動配置報告,記錄哪些自動配置條件經過了,哪些沒經過
GET/configprops描述配置屬性(包含默認值)如何注入Bean
GET/beans描述應用程序上下文裏所有的Bean,以及它們的關係
GET/dump獲取線程活動的快照
GET/env獲取所有環境屬性
GET/env/{name}根據名稱獲取特定的環境屬性值
GET/health報告應用程序的健康指標,這些值由HealthIndicator的實現類提供
GET/info獲取應用程序的定製信息,這些信息由info打頭的屬性提供
GET/mappings描述所有的URI路徑,以及它們和控制器(包含Actuator端點)的映射關係
GET/metrics報告各類應用程序度量信息,好比內存用量和HTTP請求計數
GET/metrics/{name}報告指定名稱的應用程序度量值
POST/shutdown關閉應用程序,要求endpoints.shutdown.enabled設置爲true
GET/trace提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等)
具體每個端點的詳細狀況請閱讀《Spring Boot實戰》—丁雪豐 第七章 深刻Actuator。
筆者提供電子版書籍,在此再也不贅述。本章筆者着重介紹如何配置使用Actuator。
關於Actuator的配置項,可查看Spring官網Spring Boot ReferenceGuide 中Commonapplication properties章節。
雖然Actuator的端點都頗有用,但你不必定須要所有這些端點。默認狀況下,全部端點(除
了/shutdown)都啓用。將endpoints.endpoint-id.enabled設置爲false,便可禁用端點,將endpoints.endpoint-id.enabled設置爲true,便可啓動端點。
測試禁用端點:修改配置文件,加入endpoints.beans.enabled=false。啓動後訪問:
若是想修改端點的固定id爲定製id,加入配置:endpoints.*.id=newId便可。
測試:配置文件中加入endpoints.beans.id=springbeans啓動後訪問:
Actuator還把它的端點以MBean的方式發佈了出來,能夠經過JMX來查看和管理。Actuator的端點都發布在org.springframework.boot域下。使用jcnsole.exe查看以下:
從/metrics端點得到運行中應用程序的內部度量信息,包括內存、垃圾回收和線程信息等,若是還想定義本身的度量,方式以下:
l Spring提供以下兩個接口及其用途:
CounterService這個接口裏定義了三個方法,分別用來增長、減小或重置特定名稱的度量值,代碼以下:
packageorg.springframework.boot.actuate.metrics;
publicinterface CounterService {
voidincrement(String metricName);
voiddecrement(String metricName);
voidreset(String metricName);
}
GaugeService接口與CounterService相似,能將某個值記錄到特定名稱的度量值裏。
packageorg.springframework.boot.actuate.metrics;
publicinterface GaugeService {
voidsubmit(String metricName, double value);
}
Spring Boot已經提供了二者的實現。咱們所要作的就是把它們的實例注入所需的Bean,在適當的時候調用其中的方法,更新想要的度量值便可。
編寫代碼以下:
l 啓動測試
另:關於Bean的注入可使用另一種方式:
關於Actuator還有更多的使用方式,如添加自定義跟蹤倉庫,插入自定義健康指標等。
筆者不在演示,若有興趣,可參考《Spring Boot實戰》。
實際應用中爲了將暴露的端點與應用的業務接口區分開,或者便於進行安全控制,以及便於根據端點深刻開發使用監控信息,可能須要將暴露的端點進行分組。
在配置文件中加入配置:
management.context-path=/endpoints
啓動測試:
3.3.6.1使用SpringSecurity配置項
應用的安全機制,咱們可使用Spring Security,Spring Security是針對整個應用的,使用後訪問應用,會彈出HTTP基礎身份驗證對話框。
l 加入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
l 加入配置
security.user.name=admin
security.user.password=admin
management.security.roles=SUPERUSER
l 啓動測試
輸入配置密碼便可,通常開發中不會使用配置文件進行應用權限的管理,而是會結合數據庫或LDAP使用。
3.3.6.2自定義安全配置
咱們可使用自定義安全配置覆蓋自動配置的選項,此處不在詳細介紹,後續章節將詳細價紹SpringBoot集成Spring Security的具體使用。
<實例代碼>
Github:https://github.com/chunyuding/SpringBoot-Demo
https://github.com/chunyuding/SpringBoot-Demo.git
碼雲:https://gitee.com/dingchunyu/SpringBoot-Demo
https://gitee.com/dingchunyu/SpringBoot-Demo.git
<推薦書籍>
百度雲:http://pan.baidu.com/s/1qYA0Nxi