微服务项目排错: DruidDataSourceAutoConfigure Init DruidDruidDataSource

exclude = DruidDataSourceAutoConfigure.class 即使排除了,你仍然可以使用数据库。排除自动配置类只是意味着 Spring Boot 不会自动配置 Druid 数据源,需要手动配置数据源和相关的数据库设置。 阅读详情

文章记录项目报错排查过程:

问题描述:项目架构 spring cloud alibaba ,其中一服务启动时一直卡在 Init DruidDataSource,且在不停地打印INFO级别的 " Init DruidDataSource"

 [main] INFO  c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
 [main] INFO  c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
 [main] INFO  c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
 ....

修改logback.xml日志配置文件,修改为DEBUG级别,打印更多详细日志

发现一在个DEBUG级别的日志中隐藏着Bean创建错误如下:

2021-06-08 17:05:18.896 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:335 - Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2021-06-08 17:05:18.913 [main] DEBUG o.s.b.factory.support.DefaultListableBeanFactory:1665 - Bean creation exception on eager FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jimuReportShareDao' defined in URL [jar:file:/C:/Users/admin/.m2/repository/org/jeecgframework/jimureport/spring-boot-starter-jimureport/1.3.1-beta4/spring-boot-starter-jimureport-1.3.1-beta4.jar!/org/jeecg/modules/jmreport/desreport/dao/JimuReportShareDao.class]: Cannot create inner bean '(inner bean)#430212cb' of type [org.jeecgframework.minidao.aop.MiniDaoHandler] while setting bean property 'proxy'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name '(inner bean)#430212cb#9': Unsatisfied dependency expressed through field 'jdbcTemplate'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jdbcTemplate' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/JdbcTemplateConfiguration.class]: Unsatisfied dependency expressed through method 'jdbcTemplate' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class]: Invocation of init method failed; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

主要异常堆栈最后一个报错当作根本原因: Failed to determine a suitable driver class

目测应该是Jar冲突,打开IDEA的项目JAR依赖视图
在这里插入图片描述
果然发现有两个版本不同的mysql jar

接下自然就想到用maven 的 dependeny:tree 目标打印依赖关系
打印报错服务的依赖视频后,经验检查并没有发现有8.0.21的包,推测可能是和其它服务或parent项目的依赖有冲突,对顶级项目执行 dependeny:tree

+- org.jeecgframework.boot:jeecg-boot-base-tools:jar:2.4.3:compile
+- mysql:mysql-connector-java:jar:8.0.21:runtime

+- org.springframework.boot:spring-boot-starter-web:jar:2.3.5.RELEASE:compile
+- mysql:mysql-connector-java:jar:8.0.22:runtime

发项顶级项目中配置了:
<mysql-connector-java.version>8.0.21</mysql-connector-java.version>

故修改pom.xml配置的版本号,重新构建,问题解决

SpringBoot项目多个数据源冲突 确保你使用的所有Spring Boot相关依赖都是兼容的,并尝试升级或降级相关库的版本,以查看是否可以解决冲突。如果你确实需要两个数据源(例如,一个主数据源和一个从数据源),你可以确保这两个自动配置的数据源有不同的名称,然后在你的应用中通过名称来引用它们。的Bean,但是Spring Boot的默认行为是不允许同一个上下文中存在两个同名的Bean的,除非明确指定了允许覆盖(overriding)。: 你也可以选择不使用自动配置,而是手动定义你的数据源配置。然后,你可以手动配置你所需的数据源。 阅读详情

相关推荐

druid解析-连接池初始化

本文主要介绍连接池初始化的过程。

龚厂长的博客 2555

Druid配置

Druid配置 使用yml进行连接池配置 yml是使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的 spring是第一级 spring.datasource是第二级 spring.datasource.druid是第三级 spring的datasource的自动装配是通过其org.springframework.boot.autoconfigure.jdbc这个jar包内的DataSourceAutoConfiguration类实现的,是通过META-INF内的sprin

weixin_42194515的博客 5621

别再折腾Windows了!Ubuntu 22.04下USRP X310 + RFNoC + Vivado 2021.1开发环境保姆级搭建指南

本文提供Ubuntu 22.04下USRP X310 + RFNoC + Vivado 2021.1开发环境的详细搭建指南,涵盖系统优化、UHD驱动编译、Vivado配置及硬件验证等关键步骤,帮助射频工程师高效构建稳定的开发环境,显著提升FPGA开发效率。

weixin_29168675的博客 230

【错误集锦】

错误集锦 今日起,记录开发路上遇上的错误,持续更新 1. Error creating bean with name dataSource defined in class path resource [com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class] 原因大致分为两种:一、dateSource重复定义; 二、dateSource配置错误 第一种情况:dateSource重复定义 SpringBoo

qq_44916654的博客 3382

【Mysql】记一次springboot启动卡在初始化Druid的问题

自己无聊手撸了一个springboot项目 然后在启动时卡在 [ main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource 这个地方,常见的就是在代码中打了断点,会导致启动特别慢 但我并没有打断点 晚上基本上都是这个问题 直到我检查连接配置 原来是端口写错了 当时看走眼,看到编码去了,实际端口是3306 后面把端口改正确后就正常启动了 结尾: m...

qq171563857的博客 6245

druid源码分析—DruidDataSource的基本分析(五)

DruidDataSource Spring Bean 初始化 在Spring Boot项目中,我们只需要简单声明一下Druid就会自动调用,DruidDataSourceinit()方法 @Configuration @ConditionalOnClass(DruidDataSource.class) @AutoConfigureBefore(DataSourceAutoConfiguration.class) @EnableConfigurationProperties({DruidStatProp

qq_26146367的博客 1890

Spring生态中如何使用 Druid & Druid 如何初始化数据库连接池

一、使用 Druid Spring Boot 项目中配置数据库连接池为 Druid 并启动项目,Spring 上下文初始化完成后会初始化 DruidDataSource, 如下图: 核心类: DruidDataSourceAutoConfigure 负责初始化 DruidDataSource com.alibaba.druid.pool.DruidDataSource 负责创建高效可管理的数据库连接池 二、 druid-spring-boot-starter 源码 DruidDataSourceA

Loving you 2676

springboot启动异常(DataSourceBeanCreationException: Failed to determine a suitable driver class)

一:异常DataSourceBeanCreationException: Failed to determine a suitable driver class 2020-07-22 10:56:11.093 INFO 11732 --- [ main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource 2020-07-22 10:56:11.209 WARN 11732 --- [ m

l13880647015的博客 1万+

druid的一个参考配置【转载】

以下是一个参考的连接池配置: <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <...

aipang8854的博客 371

Druid源码阅读1-DruidDataSourceinit()

首先,在test中找到连接池的测试Demo 在DruidDataSource 这个类中,DruidConnectionHolder 数组存着所有池中的连接 private volatile DruidConnectionHolder[] connections; 接下来,看看getConnections()方法 跟进init()方法看看初始化了什么,可以看到init 方法主要做了下面这些事情 1、根据jdbcUrl判断连接的数据库类型,获取对应的JdbcDriver以及初始化Conne.

suxiao_21的博客 1540

SpringBoot整合Druid数据库连接池&多数据源&注解切换&动态添加

*** 自定义多数据源切换注解* 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准*/@Inherited/*** 切换数据源名称*/

hello,word! 7422

配置动态数据源(多数据源数据库@DS)(druid监控SQL与URL)与引起(If you want an embedded database (H2, HSQL or Derby))类问题

配置动态数据源(多数据源数据库@DS)(druid监控SQL与URL)与引起(If you want an embedded database (H2, HSQL or Derby))类问题

qq_19891197的博客 3029

Druid源码分析(二)-- 初始化DataSource

Druid源码分析(二)-- 初始化DataSourceDruid源码分析(二)-- 初始化DataSource源码目录测试JDBCDruid监控页面演示debug Druid源码分析(二)-- 初始化DataSource 源码目录 druid/src/main/java/com/alibaba/druid/ ├── Constants.java ├── DbType.java ├── DruidRuntimeException.java ├── FastsqlColumnAmbiguousExceptio

可惜没如果的博客 2164

基于springboot之druid连接池自动装配原理解析

druid1.概述2.环境配置3.springboot 自动装配浅析@EnableAutoConfiguration注解 1.概述 因为druid会用到springboot的自动装配,对这个有基础的可以略过第3个直接进入主题 2.环境配置 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactI

小g的博客 3078

springboot+druid+dynamic-dataSouce多数据源 配置及踩坑

springboot+druid+dynamic-dataSouce多数据源 配置及踩坑记录 项目先集成了阿里的 druiddruid-spring-boot-starter,并已经配置好数据源。 突然项目有需要多数据源访问,遂集成引用dynamic-datasource-spring-boot-starter。 但是添加 maven 引用之后,项目启动一直报错,且报错位置在业务代码处 下面是报错代码 2020-11-12 17:41:10.335 INFO 8892 --- [ ma

xbb13439362275的博客 1万+

Spring Boot 优雅配置多数据源

最常见的单一应用中最多涉及到一个数据库,即是一个数据源(Datasource那么顾名思义,多数据源就是在一个单一应用中涉及到了两个及以上的数据库了。urlusernamepassword这三个属性已经唯一确定了一个数据库了,DataSource则是依赖这三个创建出来的。则多数据源即是配置多个DataSource(暂且这么理解)。动态数据源简单的说就是能够自由切换的数据源,类似于一个动态路由的感觉,Spring 提供了一个抽象类是一个Map结构,所有需要切换的数据源都存放在其中,根据指定的。

程序员高级码农的博客 2284

Druid源码阅读2-DruidDataSourceinit过程

DruidDataSource的使用都是创建DruidDataSource对象,set配置参数之后,调用init方法。 通过mock测试实例化DruidDataSourceDruidDataSource ds = new DruidDataSource(); ds.setUrl("jdbc:fake:dragoon_v25masterdb"); ds.setUsername("tddl5"); ds.setPassword("tddl5"); ds.setFilters("stat"); ds.init

dhaibo1986的专栏 2126

springboot启动一直打印Init DruidDataSource

SpringBoot项目启动后,控制台一直打印日志:Init DruidDataSource导致启动失败,解决办法: 删除项目目录下的.idea目录,然后重启idea,再将项目设置为maven工程,然后启动成功

zhangwenchao0814的博客 2753

Springboot+Mybatis+druid取消使用数据库自动配置启动

Springboot2.0+Mybatis+druid搭建的环境(Intelij IDEA),数据库使用Oracle。 项目移植时目标计算机没有安装数据库,想先跑起来试试。从网站找了方法,多半是在@SpringBootApplication注解中,添加 exclude={DataSourceAutoConfiguration.class},结果报错如下图: 看报错的地方,系统仍然自动配...

长风破晓 1万+

山东大学FPGA课程实验一 加法器设计

电子设计自动化与FPGA设计,实验一 加法器设计

2503_91283667的博客 848

【2025最新版】Anaconda安装超详细教程(附安装包))Anaconda新手安装+配置+环境创建教程Anaconda安装.zip

【2025最新版】Anaconda安装超详细教程(附安装包))Anaconda新手安装+配置+环境创建教程Anaconda安装.zip

上一篇: 基础Redis、FastDFS、RocketMQ docker-compose.yml 配置文件
下一篇: Centos Docker安装Rabbitmq及常见问题
licbc
博客等级 码龄5年 8粉丝 27原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

licbc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值