[英]@ConditionalOnBean doesn't work properly with micrometer MeterRegistry
I am trying to expose metrics out of my spring boot application using micrometer.我正在尝试使用千分尺从我的 spring 引导应用程序中公开指标。
Following configuration didn't work for some reason:由于某种原因,以下配置不起作用:
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter({ MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class })
@ConditionalOnClass(MeterRegistry.class)
@ConditionalOnBean(MeterRegistry.class)
public class SuperTestAutoConfig {
@Bean
public Object testBean() {
return new Object();
}
}
Spring says: Spring 说:
SuperTestAutoConfig:
Did not match:
- @ConditionalOnBean (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) did not find any beans of type io.micrometer.core.instrument.MeterRegistry (OnBeanCondition)
Matched:
- @ConditionalOnClass found required class 'io.micrometer.core.instrument.MeterRegistry' (OnClassCondition)
But for absolutely the same annotated configuration JvmMetricsAutoConfiguration
it works perfectly:但是对于完全相同的注释配置JvmMetricsAutoConfiguration
它可以完美运行:
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter({ MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class })
@ConditionalOnClass(MeterRegistry.class)
@ConditionalOnBean(MeterRegistry.class)
public class JvmMetricsAutoConfiguration {}
Log says:日志说:
JvmMetricsAutoConfiguration matched:
- @ConditionalOnClass found required class 'io.micrometer.core.instrument.MeterRegistry' (OnClassCondition)
- @ConditionalOnBean (types: io.micrometer.core.instrument.MeterRegistry; SearchStrategy: all) found bean 'prometheusMeterRegistry' (OnBeanCondition)
Fully example is here: https://filebin.net/gjxnwwksaqs1x8zg完整的例子在这里: https://filebin.net/gjxnwwksaqs1x8zg
The reason was in missing spring.factories
definition for this autoconfig.原因是缺少此自动配置的spring.factories
定义。 After listing this class in spring.factories
it works perfectly as expected.在 spring.factories 中列出此spring.factories
后,它可以按预期完美运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.