2016-12-01 65 views
1

我無法設置爲我的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),但我不能使它發揮作用。其他健康指標工作正常(該項目中的磁盤空間,其他項目中的郵件和數據庫)。春Couchbase健康指示符

@ConditionalOnClass({ CouchbaseOperations.class, Bucket.class }) 
@ConditionalOnBean(CouchbaseOperations.class) 
@ConditionalOnEnabledHealthIndicator("couchbase") 

這是初始化爲健康指標的條件。所提到的類位於類路徑中。 該項目啓動後,我讓它打印在其應用程序上下文豆 - 有一個豆「CouchbaseTemplate」,它實現了所需的CouchbaseOperations。

我也是手動啓用couchbase健康檢查這樣

management.health.couchbase.enabled = true 

,同時也保留檢查磁盤空間,不檢查是否couchbase。

你可以找到我在GitHub上的項目:https://github.com/Age15990/CouchbaseHI 請隨時免費下載和嘗試。如果您遇到這個問題之前,或者你有一個想法如何解決它,我會很樂意閱讀你的答案。

在此先感謝!

+0

這是帕特里克報道中的錯誤。它將被固定爲'1.4.3',將在幾周內發佈。 –

回答

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); 
    } 
} 

說明:

的couchbase健康指標的自動配置似乎被打破。當我從原來的配置註釋掉@ConditionalOnBean(CouchbaseOperations.class)HealthIndicatorAutoConfiguration.class這對我的作品。

這意味着CouchbaseOperations.class未初始化之前正確的自動配置發生了。