springboot2 actuator(二) conditions(原autoconfig)

說明

本編是學習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/

--------------------------------------------------------

相關文章
相關標籤/搜索