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/

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

相关文章
相关标签/搜索