本编是学习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/
--------------------------------------------------------