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

spring boot 2.1中的DataSource bean重写

狄侯林
2023-03-14

我已经升级到spring Boot2.1版本,我在启动应用程序时遇到了奇怪的异常。

[O.S.B.W.S.C.AnnotationConfigServletWebServerApplicationContext]上下文初始化期间遇到html" target="_blank">异常-取消刷新尝试:org.SpringFramework.Beans.Factory.Support.BeanDefinitionOverrideException:类路径资源[org/SpringFramework/Boot/AutoConfigure/JDBC/DatasourceConfiguration$Hikari.class]中定义的BeanDefinition中定义的名称为“Data Source”的bean定义无效:无法注册bean定义[根bean:类YCHECK=0;AutoWireCandidate=false;Primary=false;FactoryBeanname=org.springframework.boot.autocigure.jdbc.DataSourceConfiguration$hikari;FactoryMethodName=数据源;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类导入各种其他配置:

@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 {
    ...
}

共有1个答案

全昊焜
2023-03-14

今天我遇到了一个类似的问题,接下来的spring cloud config问题帮助了我:问题1142。

我们使用的Spring Cloud Config,到目前为止还不兼容Spring Boot2.1.0。Spring Cloud的Greenwich发行版将与Spring Boot 2.1.0兼容。

您的@enablecircuitbreaker注释使我相信您使用的Spring Cloud版本可能也与Spring Boot的2.1.0版本不兼容。

 类似资料:
  • 我维护了一个SpringBootStarter,它定制了在调用未知endpoint时返回的错误属性。这是通过覆盖组织来实现的。springframework。靴子网状物servlet。错误错误属性bean。 2.0.6一切正常,但是2.1.0默认禁用bean重写,使得启动程序现在失败,出现以下消息。 在类路径资源[com/mycompany/springboot/starter/config/Er

  • 问题内容: 覆盖和过载之间有什么区别? 问题答案: 重载:在编译时根据指定参数的数量和类型选择方法 签名 覆盖:在执行时根据目标对象的实际类型(与表达式的编译时类型相对)选择方法 实现 例如: 这两个调用都是 重载的 示例。有两种方法,称为,编译器确定要调用的签名。 第一次调用是 覆盖 的示例。编译器选择签名“ foo(int)”,但是在执行时,目标对象的类型确定要使用的实现应为in中的一个。

  • 问题内容: 让我们看一下这个简单的Java代码: 我试图找出三个eat()方法的哪个版本。现在,当我键入 输出是“一般动物食用”,这是完全可以理解的。 当我键入以下内容时,会发生相同的事情: 输出是“吃干草的马”,这完全是合乎逻辑的。 这就是让我感到困惑的地方。当我键入: 我得到: 我希望编译器从Animal类引用而不是Horse对象引用中调用eat()方法。 所以我的问题是,当我有一个引用对象类

  • 问题内容: 我正在记录我已经开发的Java程序,并且想知道如果仅记录超类,是否将为继承的方法(被重写)生成JavaDoc? 如果我有一个用方法调用的类,而有一个用该方法重写的子类,那么如果Car类中没有放置Javadoc,Carss驱动方法中是否会包含Vehicles驱动方法的文档? 问题答案: [I]想知道如果我仅记录超类,是否将为继承的方法(被重写)生成JavaDoc? 是。如果在子类上没有j

  • 问题内容: 因此,我试图找出最好的方法(以最少的代码量实现最优雅的方法)以允许重写python中某个属性的特定功能(例如,仅使用getter,仅使用setter等)。我喜欢下面的属性处理方式,因为它们的所有方法都封装在同一缩进的代码块中(更容易看到处理一个属性的函数在哪里停止,而处理一个属性的函数在哪里停止比较容易下一个开始): 但是,如果我想从以这种方式定义属性的类中继承,然后重写setter函

  • 问题内容: 用Java如何实现方法重写?在C ++中,我们有vtable的概念。.这是如何在Java内部实现的? 问题答案: 为了回答这个问题,特别是在虚拟机中如何实现覆盖,在Java虚拟机编程(Google图书链接)中有一篇文章。 VM将在所引用的类中寻找适当的方法定义,然后逐步处理继承栈。显然,在某些阶段将应用各种优化。 有关相关字节码指令的说明,请参见此处: invokevirtual会查看

  • 最初在GitHub上发布了这篇文章,但可能更适合这个论坛... 我们将一些自定义元数据值分配给在Eureka中注册的Spring云服务,现在我们需要在Eureka仪表板中对这些值具有可见性。我正在尝试扩展/覆盖/infoendpoint,以便我们的元数据可以从Eureka仪表板中看到,该仪表板已经提供了到每个注册服务的/infoendpoint的超链接。我读到过这样的消息:只需将bean的自己版本

  • 问题内容: 我想重置(随机化)我的Keras(深度学习)模型中所有层的权重。原因是我希望能够使用不同的数据拆分多次训练模型,而不必每次都进行(缓慢的)模型重新编译。 受此讨论的启发,我正在尝试以下代码: 但是,它仅部分起作用。 部分是因为我检查了一些layer.get_weights()值,但它们似乎有所变化。但是,当我重新开始训练时,成本值比第一次运行时的初始成本值低得多。几乎就像我已经成功重置