【问题标题】:Spring Boot Actuator DataSourceHealthIndicator not working for auto-configured DataSourceSpring Boot Actuator DataSourceHealthIndicator 不适用于自动配置的 DataSource
【发布时间】:2016-11-25 18:14:05
【问题描述】:

我在 Spring Boot 1.3.6 中使用自动配置的 DataSource,并且我正在使用 Actuator 的健康端点。但是,健康端点在输出中不包含任何数据库组件。

我的application.properties如下:

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:local
spring.datasource.username=vagrant
spring.datasource.password=vagrant
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

endpoints.enabled=false
endpoints.health.enabled=true

/health 端点的输出是:

{"status":"UP","diskSpace":{"status":"UP","total":499863515136,"free":121851781120,"threshold":10485760}}

我启用了跟踪日志记录,看起来 Spring Boot 在数据源之前自动配置了健康指标。以下是跟踪日志的摘录(注意时间戳):

2016-07-22 10:07:20.976 TRACE 7628 --- [restartedMain] o.s.b.a.condition.OnClassCondition       : Condition OnClassCondition on org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration$DataSourcesHealthIndicatorConfiguration matched due to @ConditionalOnClass classes found: org.springframework.jdbc.core.JdbcTemplate
2016-07-22 10:07:20.977 TRACE 7628 --- [restartedMain] .b.a.a.OnEnabledHealthIndicatorCondition : Condition OnEnabledHealthIndicatorCondition on org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration$DataSourcesHealthIndicatorConfiguration matched due to All default health indicators are enabled by default
2016-07-22 10:07:23.304 TRACE 7628 --- [restartedMain] o.s.b.a.condition.OnClassCondition       : Condition OnClassCondition on org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration$DataSourcesHealthIndicatorConfiguration matched due to @ConditionalOnClass classes found: org.springframework.jdbc.core.JdbcTemplate
2016-07-22 10:07:23.305 TRACE 7628 --- [restartedMain] o.s.b.a.condition.OnBeanCondition        : Condition OnBeanCondition on org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration$DataSourcesHealthIndicatorConfiguration did not match due to @ConditionalOnBean (types: javax.sql.DataSource; SearchStrategy: all) found no beans

2016-07-22 10:07:23.577 TRACE 7628 --- [restartedMain] o.s.b.a.condition.OnBeanCondition        : Condition OnBeanCondition on org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration matched due to @ConditionalOnMissingBean (types: javax.sql.DataSource,javax.sql.XADataSource; SearchStrategy: all) found no beans
2016-07-22 10:07:23.578 DEBUG 7628 --- [restartedMain] a.ConfigurationClassBeanDefinitionReader : Registered bean definition for imported class 'org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration'
2016-07-22 10:07:23.578 DEBUG 7628 --- [restartedMain] a.ConfigurationClassBeanDefinitionReader : Registering bean definition for @Bean method org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource()

我做错了什么,或者这是 Spring Boot 中的错误?有没有办法改变顺序以便首先初始化数据源?

【问题讨论】:

    标签: spring-boot spring-boot-actuator


    【解决方案1】:

    我的问题是从 Eclipse 运行应用程序引起的。我还在 src/test/java 中有一个 TestApplication 类,它排除了 DataSourceAutoConfiguration。我从组件扫描中排除了TestApplication 类(通过@ComponentScan 上的excludeFilter)并且健康端点按预期工作(即它包含数据库信息)。

    【讨论】:

      猜你喜欢
      • 2017-06-27
      • 2021-08-25
      • 2016-02-14
      • 2016-05-02
      • 2021-02-16
      • 2020-09-06
      • 2018-11-06
      • 2019-04-19
      • 1970-01-01
      相关资源
      最近更新 更多