Spring Boot 2.1 中的 DataSource bean 重写

2024-03-04

我已经升级到 spring boot 2.1 版本,启动应用程序时出现奇怪的异常。

无法注册在类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class] 中定义的 BeanDefinition 中定义的 bean“dataSource”。具有该名称的 bean 已在类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class] 中定义,并且覆盖被禁用。

完整的错误消息是:

[o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext] 上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.support.BeanDefinitionOverrideException:在类路径资源 [org/springframework/boot/autoconfigure 中定义的 BeanDefinition 中定义的名称为“dataSource”的无效 bean 定义/jdbc/DataSourceConfiguration$Hikari.class]:无法注册bean定义[根bean:类[org.springframework.aop.scope.ScopedProxyFactoryBean];范围=;摘要=假;惰性初始化=假;自动连线模式=0;依赖检查=0; autowireCandidate = true;主要=假;工厂BeanName=null;工厂方法名称=null; initMethodName=null;销毁方法名称=null;在类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]] 中为 bean 'dataSource' 定义的 BeanDefinition 中定义:已经存在 [Root bean: class [null];范围=刷新;摘要=假;惰性初始化=假;自动连线模式=3;依赖检查=0; autowireCandidate=假;主要=假; factoryBeanName=org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari;工厂方法名称=数据源; initMethodName=null; destroyMethodName=(推断);在类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]] 绑定中定义。

根据我们的政策,Bean 不得被覆盖,并且可以通过以下方式禁用它:

spring.main.allow-bean-definition-overriding=false

我的应用程序代码中没有任何数据源配置。触发此错误的唯一选项是@EnableAutoConfiguration在我的应用程序属性中,我已将数据源类型设置为:

spring.datasource.type=com.zaxxer.hikari.HikariDataSource

启动应用程序初始化为

@SpringBootApplication
@EnableAutoConfiguration
public class MyApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        new MyApplication()
            .configure(new SpringApplicationBuilder(MyApplication.class))
            .run(args);
    }
}

还有导入各种其他配置的配置类:

@Configuration
@ImportResource(locations = {
    "classpath*:conf/spring/*.xml",
    "classpath*:conf/spring/core/*.xml",
    "classpath*:conf/spring/plugin/**/*.xml"
})
@EnableAsync
@EnableRetry
@EnableCaching
@EnableBatchProcessing
@EnableCircuitBreaker
public class AppConfig {
    ...
}

有谁知道什么可能导致该问题以及在哪里搜索?

在 Spring Boot 2.1(即 2.0.5)之前并没有发生这种情况。


我今天遇到了类似的问题,以下 spring cloud 配置问题帮助了我:第1142期 https://github.com/spring-cloud/spring-cloud-config/issues/1142.

我们使用的 Spring Cloud Config 尚未与 Spring Boot 2.1.0 兼容。 Spring Cloud 的 Greenwich 版本系列将与 Spring Boot 2.1.0 兼容。

Your @EnableCircuitBreaker注释让我相信您可能还使用与 Spring Boot 2.1.0 版本不兼容的 Spring Cloud 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 2.1 中的 DataSource bean 重写 的相关文章

随机推荐

  • 在定义函数之前调用函数(前向引用扩展了变量的定义)

    考虑这个基本的 Scala 示例代码 object Test def main args Array String inner var x Int 5 def inner println x x 尝试编译它会产生以下错误消息 test sc
  • Access 中的 ConcatRelated(),使用两个键

    我找到了 ConcatRelated 函数 http allenbrowne com func concat html 它似乎做了我想要的事情 但我需要输入两个键而不是一个 我的数据如下所示 Chain Store Warehouse Wa
  • 从相机捕获的iphone图像自动旋转Swift

    通过编程方式 我在应用程序中从相机捕获了图像 它已经很好地获取了 但是当我转移到另一个时 查看并忽略那个视图 当时我的图像我想旋转为风景 我用相机拍摄了图像 当我从照片库获取图像时 没有发现问题 下图是我的原图 截屏 https i sta
  • 如何将数据从一个 BigTable 表复制到另一个 BigTable 表

    我正在尝试将数据从一个 Bigtable 表复制到另一个 Bigtable 表 但没有找到任何直接的方法来执行此操作 可以选择将数据从 Bigtable 表复制到 Google Storage 然后从存储文件复制回 Bigtable 但这需
  • API方法排序:Swagger版本3.0.2

    我在用招摇版本3 0 2 http swagger io swagger ui 我也关注了这个答案 https stackoverflow com a 32345035 3006390但对方法顺序没有影响 window onload fun
  • 在 Spark 数据框中创建 StructType 的空列

    我需要将 StructType 的空列添加到现有的 DataFrame 中 尝试以下 df df withColumn features typedLit StructType Nil And df df withColumn featur
  • 对表单集中的每个表单进行重复查询

    在我的 Django 应用程序中 我的用户可以拥有多个职位 即 Position 模型有 User 模型的外键 通过使用 djangomodelformset factory我输出与当前登录用户关联的所有位置 如下所示 视图 py clas
  • 单步执行属性/函数 (F11) 无法按预期工作

    In Visual Studio 2010 the Step Into Property Function F11 doesn t work as expected 它不会进入属性设置器或获取器 我将解决方案转换为Visual Studio
  • 如何在 React App 中嵌入 Google 自定义搜索?

    我需要在 React 应用程序中嵌入 JS 小部件 有办法做到吗 JS 小部件是 Google 自定义搜索 function var cx 111 xxx var gcse document createElement script gcs
  • 在开发与生产版本中自动更改 Vite 代理位置?

    在我正在开发的单页应用程序中 我正在使用 Vite 并在我的vite config ts文件我有以下代理 proxy v1 target https 127 0 0 1 8080 changeOrigin true secure false
  • updatepanel中异步回发后如何在客户端推迟更新

    我有一个旧系统 它使用UpdatePanelsASP NET 的 之后postback完成后 我们知道里面UpdatePanel已更新 我可以在客户端以某种方式延迟此更新吗 那可能吗 所以就像 当postback启动后 我设置了一个java
  • MSMQ 与临时表转储

    我知道这个问题之前已经被问过 但环顾四周 我还是拿不定主意该走哪条路 以下是我的情况 希望对你有帮助 我们将提供一系列网络服务 数百个移动应用程序将按计划访问这些服务 这些服务将在设备上提供数据 并将新信息发送到设备并从设备返回 从设备返回
  • jQuery:从triggerHandler()接收额外参数

    span test span change function e console log e data triggerHandler change foobar 1 是我做错了还是有问题 谢谢 额外的数据作为参数传递给处理程序 span t
  • CoreNLP SemanticGraph - 搜索具有特定引理的边

    我正在使用斯坦福 CoreNLP 的依存解析器 并且想知道如何使用特定的头引理 从属引理和词汇关系对 SemanticEdge 进行通用搜索 例如 如果我有这样的实际依赖项 doobj 发现 4 见解 6 如何使用引理而不是字面单词和索引来
  • 如何将基于权重的累积趋势线添加到 R 的直方图中?

    在下面的直方图中添加累积趋势线时遇到了一些严重的问题 与我能找到的所有示例的主要区别在于 x 轴应该是距离的区间 但 y 轴是每个 bin 的 tonne km 总和 我为此使用重量 累积密度曲线应包括重量 吨 公里 为此随机生成一些数据
  • 在 ViewHolder 模式中将 ViewHolder 设置为静态对性能至关重要吗?

    将 ViewHolder 设置为静态对性能至关重要吗 ViewHolder模式 http developer android com training improving layouts smooth scrolling html View
  • 将一个函数绑定到kivy中的多个动态创建的按钮?

    Problem 我想创建多个按钮并将它们绑定到一个函数 问题是 每当我单击一个按钮时 该函数就会被多次调用 看来是事件连接的问题 当我查看按下按钮时调用该函数的实例时 似乎该函数立即从每个按钮调用 KV Code This is the b
  • IndexedDB:承诺升级?

    刚刚开始我的第一个项目 IndexedDb 我很难尝试创建一个在第一次使用时打开和升级数据库的系统 我想使用承诺 当前角Js q https code angularjs org 1 2 22 docs api ng service 24q
  • pthread_create 不带参数?

    我想创建一个没有函数参数的线程 但我不断收到严重困扰我的错误 因为我无法让一些超级简单的东西正常工作 这是我的代码 include
  • Spring Boot 2.1 中的 DataSource bean 重写

    我已经升级到 spring boot 2 1 版本 启动应用程序时出现奇怪的异常 无法注册在类路径资源 org springframework boot autoconfigure jdbc DataSourceConfiguration