本編是學習actuator的第二篇, 逐步對actuator 的認識作一個記錄分享.html
主要對actuator中的conditions的一個認識.(基於第一篇執行)web
springboot2前: 端點的自動化配置信息獲取地址是 /autoconfigspring
官方改動說明: /autoconfig-->Renamed to /conditionssql
springboot2後: 獲取地址 /actuator/conditions apache
以上都是無自定義的默認訪問.json
該端點用來獲取應用的自動化配置, 其中包括全部自動化配置的候選項。同時還列出了每一個候選項自動化配置的各個先決條件是否知足。該端點能夠幫助咱們方便的找到一些自動化配置爲何沒有生效的具體緣由.api
------------------------------------------------------springboot
http://localhost:8081/actuator/conditions
獲取的信息只展現部分,太長了,以下:session
{ contexts: { application: { positiveMatches: { PageHelperAutoConfiguration: [ { condition: "OnBeanCondition", message: "@ConditionalOnBean (types: org.apache.ibatis.session.SqlSessionFactory; SearchStrategy: all) found beans 'sqlSessionFactorCat', 'sqlSessionFactorDog'" } ] }, negativeMatches: { ElasticsearchHealthIndicatorAutoConfiguration.ElasticsearchClientHealthIndicatorConfiguration: { notMatched: [ { condition: "OnClassCondition", message: "@ConditionalOnClass did not find required class 'org.elasticsearch.client.Client'" } ], matched: [ ] }, }, unconditionalClasses: [ "org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration" ] } } }
對於以上返回的信息, 參數說明:app
contexts | Object | Application contexts keyed by id. |
positiveMatches | Object | condition匹配的類和方法. |
condition | String | condition名字. |
message | String | condition對應詳細說明. |
negativeMatches | Object | condition不匹配的類和方法 |
notMatched | Array | conditions的條件. |
matched | Array | conditions的條件. |
unconditionalClasses | Array | 無條件自動配置類的名稱(若是有的話) |
記錄關於@Condition* 的一系列註解, 標註在類或方法上面,表示@Bean會啓用配置
引用巨人的解釋:
Spring框架還提供了不少@Condition給咱們用,固然總結用語哪一種好理解,看給位讀者嘍
@ConditionalOnBean(僅僅在當前上下文中存在某個對象時,纔會實例化一個Bean)
@ConditionalOnClass(某個class位於類路徑上,纔會實例化一個Bean)
@ConditionalOnExpression(當表達式爲true的時候,纔會實例化一個Bean)
@ConditionalOnMissingBean(僅僅在當前上下文中不存在某個對象時,纔會實例化一個Bean)
@ConditionalOnMissingClass(某個class類路徑上不存在的時候,纔會實例化一個Bean)
@ConditionalOnNotWebApplication(不是web應用)
@ConditionalOnClass:該註解的參數對應的類必須存在,不然不解析該註解修飾的配置類;
@ConditionalOnMissingBean:該註解表示,若是存在它修飾的類的bean,則不須要再建立這個bean;能夠給該註解傳入參數例如@ConditionOnMissingBean(name = "example"),這個表示若是name爲「example」的bean存在,這該註解修飾的代碼塊不執行。
官方actuator文檔說明: https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/actuator-api/html/
--------------------------------------------------------