【发布时间】:2015-10-26 07:14:28
【问题描述】:
我定义了一个带有注解配置的类
@Configuration
@AutoConfigureAfter(EndpointAutoConfiguration.class)
public class EndpointConfiguration {
@Resource
private MetricsEndpoint metricsEndpoint;
@Bean
public MetricsFormatEndpoint metricsFormatEndpoint() {
return new MetricsFormatEndpoint(metricsEndpoint);
}
}
MetricsFormatEndpoint 运行良好。
但是我使用注解conditionalOnBean,它根本不起作用。
@Bean
@ConditionalOnBean(MetricsEndpoint.class)
public MetricsFormatEndpoint metricsFormatEndpoint() {
return new MetricsFormatEndpoint(metricsEndpoint);
}
查看 localhost:8080/beans,spring applicationContext 有 bean 'metricsEndpoint',
{"bean":"metricsEndpoint","scope":"singleton",
"type":"org.springframework.boot.actuate.endpoint.MetricsEndpoint",
"resource":"class path resource
[org/springframework/boot/actuate/autoconfigure/EndpointAutoConfiguration.class]",
"dependencies":[]}
我阅读了注解@ConditionalOnBean 的文档,上面写着应检查的bean 的类类型。当指定的任何类包含在 {@link ApplicationContext} 中时,条件匹配。
谁能告诉我原因
【问题讨论】:
-
当你说“它根本不起作用”时,会发生什么?您见过哪些失败/意外行为?