我在为Spring项目设置健康指标时遇到了问题。从版本1.4.0开始,Spring自带了CouchbaseHealthIndicator(参见http://docs.spring.io/spring-boot/docs/1.4.1.RELEASE/api/org/springframework/boot/actuate/health/CouchbaseHealthIndicator.html),但我无法使其工作。其他健康指标工作正常(此项目中的磁盘空间,其他项目中的邮件和数据库)。
@ConditionalOnClass({ CouchbaseOperations.class, Bucket.class })
@ConditionalOnBean(CouchbaseOperations.class)
@ConditionalOnEnabledHealthIndicator("couchbase")
这是初始化健康指标的条件。提到的类在类路径上。 项目启动后,我让它在应用程序上下文中打印它的bean - 有一个bean' CouchbaseTemplate',它实现了所需的CouchbaseOperations。
我也像这样手动启用了基础健康检查
management.health.couchbase.enabled = true
不过,它一直在检查磁盘空间,不检查沙发底座。
您可以在GitHub上找到我的项目:https://github.com/Age15990/CouchbaseHI 请随时下载并试用。如果你之前遇到过这个问题,或者你知道如何解决它,我很乐意阅读你的答案。
提前致谢!
答案 0 :(得分:0)
spring-boot-starter-actuator
似乎存在缺陷。我为here提交了一张票。
解决方法可能是自己提供配置:
@Configuration
@ConditionalOnClass({ CouchbaseOperations.class, Bucket.class })
//@ConditionalOnBean(CouchbaseOperations.class)
@ConditionalOnEnabledHealthIndicator("couchbase")
public class CouchbaseHealthConfig extends CompositeHealthIndicatorConfiguration<CouchbaseHealthIndicator, CouchbaseOperations>
{
private final Map<String, CouchbaseOperations> couchbaseOperations;
public CouchbaseHealthConfig(Map<String, CouchbaseOperations> couchbaseOperations)
{
this.couchbaseOperations = couchbaseOperations;
}
@Bean
@ConditionalOnMissingBean(name = "couchbaseHealthIndicator")
public HealthIndicator couchbaseHealthIndicator()
{
return createHealthIndicator(this.couchbaseOperations);
}
}
<强>解释强>
沙发基地健康指标的自动配置似乎被打破了。当我从@ConditionalOnBean(CouchbaseOperations.class)
中的原始配置中评论HealthIndicatorAutoConfiguration.class
时,它对我有用。
这意味着在自动配置发生之前未正确初始化CouchbaseOperations.class
。