描述bug
SpringBoot应用在启动过程中,在判断Actuator配置是否开启时,优先读取的是本地配置文件配置的值
我是按照集成Springboot的方式去配置的,在bootstrap.properties中配置的: app.id= xxxxx apollo.meta= http://xxxxxxxx apollo.bootstrap.enabled = true apollo.bootstrap.namespaces = application apollo.bootstrap.eagerLoad.enabled=true
复现
通过如下步骤可以复现:
- Apollo配置中心配置: management.endpoints.web.exposure.include = httptrace,health management.endpoints.web.base-path = /actuator management.endpoint.health.show-details = always management.health.diskSpace.enabled = true
2.本地配置文件application.yml配置: management.endpoints.web.exposure.include = httptrace,health management.endpoints.web.base-path = /actuator management.endpoint.health.show-details = always management.health.diskSpace.enabled = false
3.启动springboot应用
期望
正常应该以Apollo配置中心的配置为准,开启diskSpace的健康检查,实际上却是以本地配置文件为准,未开启diskSpace的配置检查,也就是未注入diskSpace检查的Bean到容器中
截图 以下是系统启动过程中,判断Spring Actutor是否开启的源码进行debug,此时发生的时机是扫描包目录下的Component Bean时:
org.springframework.boot.actuate.autoconfigure.OnEndpointElementCondition: Environment对象的值: 不符合Apollo的设计思路:
额外的细节和日志-
版本: Apollo Client: 1.9.1
Spring Boot: 2.3.12.RELEASE -
平台和操作系统 :Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-55-generic x86_64)