当前位置: 首页 > 知识库问答 >
问题:

Spring Boot执行器DataSourceHealthIndicator对自动配置的DataSource不工作

万涵亮
2023-03-14

我在Spring Boot1.3.6中使用了一个自动配置的数据源,并且使用了执行器的健康endpoint。但是,运行状况终结点在输出中不包括任何数据库组件。

我的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
{"status":"UP","diskSpace":{"status":"UP","total":499863515136,"free":121851781120,"threshold":10485760}}
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靴里的bug?是否有一种方法可以更改顺序,以便首先初始化数据源?

共有1个答案

公羊浩气
2023-03-14

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

 类似资料:
  • 4.1 根据条件的自动配置 @conditional是基于条件的自动配置,一般配合Condition接口一起使用,只有接口实现类返回true,才装配,否则不装配. 用实现了Condition接口的类传入@Conditional中 @Conditional可以标记在配置类的方法中,也可以标记在配置类上.标记的位置不同,作用域不同. @Conditional可以传入多个实现了condition接口的类

  • 本机Spring Boot自动配置(例如one)也可以检测主类中声明的bean(例如注释的方法)。 如何对主类中声明的bean进行正确的bean检测? 编辑

  • 我有一个简单的SpringBoot应用程序,我想使用AutoConfiguration来配置Tomcat jdbc池数据源。 我正在使用这些Spring依赖项: 以下是我的 application.yml 文件中的数据源属性: 我确定正在加载属性,因为应用程序正在获取其他值。 我在配置文件中将 bean 定义为: 我将数据源注入到我的DAO中,如下所示: 如果我在getDataSource()方法

  • 我是Spring和J2EE的新手。我在使用带有Spring Boot自动配置的JDBC模板时遇到了问题。 我所做的是我以这里提供的RESTful Web服务为例,并决定将其扩展到使用JDBC模板关系数据库访问。不幸的是,提供的另一个示例不能有用,因为没有考虑从xml bean文件提供dataSource的唯一困难。 使用DAO Impl类作为Spring不同实现的扩展 我尝试了在Stack或Goo

  • 我正在将一个旧的java Spring项目重构为springboot,并以传统的war风格部署它。出于某种原因,我必须坚持传统的web.xml来启动应用程序。多亏了Springboot遗产,我可以通过web.xml实现这一点: 此外,我添加了springboot执行器依赖项。应用程序。属性如下所示: 应用程序可以正常启动,但当我尝试从浏览器访问endpoint时,它只返回一个“401需要完全身份验

  • 29.1 配置DataSource Java的javax.sql.DataSource接口提供了使用数据库连接的标准方法。传统上,DataSource使用URL以及一些凭据来建立数据库连接。 可以在“How-to”章节中查看更多高级示例,一般可以完全控制DataSource的配置。