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

当@refreshScope位于数据源Bean上时,JDBC不在spring Boot2上注册度量

臧增
2023-03-14

有可能让JDBC用@refreshScope向MeterRegistry注册自己吗?

有没有一种方法可以用我的bean定义中的MeterRegistry progammatic注册JDBC?

@Configuration
@EnableAutoConfiguration
@EnableTransactionManagement
@RefreshScope
public class DbConfig {

@Primary
@Bean(name = "dataSource")
@RefreshScope
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
    return DataSourceBuilder.create().build();
}

删除@refreshScope允许JDBC自动注册到MeterRegistry,但会导致以下配置更改异常:org.springframework.boot.context.properties.configurationpropertiesbindexception:创建名为“data source”的bean时出错:无法将属性绑定到“hikaridatasource”:prefix=spring.datasource,ignoreInvalidFields=false,ignoreUnknownFields=true;嵌套异常为org.springframework.boot.context.properties.bindd.bindexception:无法将“spring.datasource”下的属性绑定到javax.sql.datasource

共有1个答案

淳于飞鸾
2023-03-14

添加javax.sql.datasource作为额外的可刷新文件。application.yml文件示例:

spring:
  cloud:
    refresh.extra-refreshable:
      - javax.sql.DataSource

并从类中删除@refreshScope。其他解决方案是将DataSource转换为HikaridataSource。我使用第一种解决方案,因为数据源的创建是由应用程序中的外部库完成的。

参考:https://github.com/spring-cloud/spring-cloud-commons/issues/318

 类似资料:
  • 目标: 通过访问多个持久性单元/数据源。 问题:在 Spring xml 配置中不流畅。注册多个数据源似乎需要多个 EntityManagerFactory,这会导致错误,指出 EntityManagerFactory 不是唯一的。我尝试了两个带有抽象父级的实体管理器工厂,因为我无法在实体管理器工厂定义中添加多个数据源而不是单个数据源。我该如何解决这个问题? 我不能使用SpringBoot或Jpa

  • 我正在搜索一个在运行时注册@RestController的解决方案。我目前正在向

  • 我一直在尝试将mysql配置为WildFly中的数据源。我不确定我错过了什么,我得到一个错误启动。 我在文件夹“/wildfly-8.1.0.final/module/system/layers/base/com/mysql/main”中有mysql-connector-java-5.0.8-bin.jar和module.xml 下面是文件 module.xml standalone.xml 这是

  • 只需要社区评估的东西。下面是一段代码,这是一个创建特定类型实例的简单工厂。该方法将在上下文中注册bean作为原型并返回实例。这是我第一次在运行时配置bean。你能好心评估并提供反馈吗?事先谢谢你。 FLEX Sync工厂已在IoC容器中配置为单例。因此,要创建一个新的同步管理器,我需要执行以下操作: 我使用的是Spring 3.1。请回顾并提供宝贵的反馈。 亲切的问候。

  • 我正在使用Flink流从包括文件在内的多个资源读取输入。我的目标是定期触发一些计算(流转时长),并在到达文件末尾时触发最终结果。我的处理子拓扑如下所示 我的生成器源之一可以是包含有界数据的文件 <代码>例如环境。readFile(inputFormat、filename、FileProcessingMode.PROCESS\u ONCE、interval、typeInfo) 因此,我想知道是否有一

  • 我对这个php_oci8.dll图书馆很困惑。 我已经设置了PATH变量。我确信php_oci8.dll已经存在于xampp/php/ext文件夹中。我确信我已经取消评论扩展=php_oci8.dll. 问题是:1.当我访问phpinfo()时,我没有看到加载任何ococ8,但是,当我运行cmd命令时,它说启用