springboot shardingjdbc与druid数据源冲突问题及解决

 更新时间:2024年06月14日 15:00:04   作者:涂山小楼  
这篇文章主要介绍了springboot shardingjdbc与druid数据源冲突问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

首先看错误信息

cancelling refresh attempt: 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

如上所示:

DruidDataSourceAutoConfigure Failed to determine a suitable driver class,即druid找不到mysql driver,然而mysql的驱动包啥的都没问题,于是直接点进DruidDataSourceAutoConfigure查看源码

如上,标红表明druid是根据spring.datasource.druid找jdbc属性的,如果not found,则根据spring.datasource找jdbc属性,一般而言这是不会出现错误的。

但是我这里使用了shardingjdbc,配置如下:

spring:
  shardingsphere:
    datasource:
      names: ds0,ds1
      ds0:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://xxx:3306/ds0
        username: xxx
        password: xxx
      ds1:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://xxx:3306/ds1
        username: xxx
        password: xxx
    sharding:
      tables:
        user:
          actual-data-nodes: ds${0..1}.user${0..1}
          database-strategy:
            inline:
              sharding-column: id
              algorithm-expression: ds${id % 2}
          table-strategy:
            inline:
              sharding-column: id
              algorithm-expression: user$->{id % 2}
          key-generator:
            type: SNOWFLAKE
            column: order_id
    props:
      sql:
        show: true
      executor:
        size: 12

就很显然了,他根据spring.datasource.druid或者spring.datasource确实找不到,因为我的结构是spring.shardingsphere.datasource。

解决方式1

如果我们用的jar包是druid-spring-boot-starter,则在启动类上排除druid自动配置

@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})

解决方式2

不用

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.22</version>
</dependency>

改为

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.22</version>
</dependency>

即可~

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何自定义MyBatis拦截器更改表名

    如何自定义MyBatis拦截器更改表名

    自定义MyBatis拦截器可以在方法执行前后插入自己的逻辑,这非常有利于扩展和定制 MyBatis 的功能,本篇文章实现自定义一个拦截器去改变要插入或者查询的数据源 ,需要的朋友可以参考下
    2023-10-10
  • Mybatis-Plus中Mapper的接口文件与xml文件相关的坑记录

    Mybatis-Plus中Mapper的接口文件与xml文件相关的坑记录

    这篇文章主要介绍了Mybatis-Plus中Mapper的接口文件与xml文件相关的坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • SpringBoot中事务的只读属性详解

    SpringBoot中事务的只读属性详解

    这篇文章主要介绍了SpringBoot中事务的只读属性详解,在开发过程中,事务是一个非常重要的概念,在 Spring Boot中,事务是通过 AOP 机制来实现的,可以很方便地进行管理,需要的朋友可以参考下
    2023-08-08
  • 使用Java实现先查询缓存再查询数据库

    使用Java实现先查询缓存再查询数据库

    这篇文章主要介绍了使用Java实现先查询缓存再查询数据库,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • 基于Java class对象说明、Java 静态变量声明和赋值说明(详解)

    基于Java class对象说明、Java 静态变量声明和赋值说明(详解)

    下面小编就为大家带来一篇基于Java class对象说明、Java 静态变量声明和赋值说明(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java中的位运算符号解读(&、|、^、~、<<、>>、>>>)

    Java中的位运算符号解读(&、|、^、~、<<、>>、>>>)

    这篇文章主要介绍了Java中的位运算符号(&、|、^、~、<<、>>、>>>),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Java多线程中的Exchanger应用简析

    Java多线程中的Exchanger应用简析

    这篇文章主要介绍了Java多线程中的Exchanger应用简析,Exchanger提供了一个同步点exchange方法,两个线程调用exchange方法时,无论调用时间先后,两个线程会互相等到线程到达exchange方法调用点,此时两个线程可以交换数据,将本线程产出数据传递给对方,需要的朋友可以参考下
    2023-12-12
  • SpringBoot自定义监听器的项目实践

    SpringBoot自定义监听器的项目实践

    Spring Boot提供了强大的事件模型,其中包括多种内置监听器,同时也支持开发者自定义监听器,下面就来介绍下SpringBoot自定义监听器,感兴趣的可以了解一下
    2024-03-03
  • Java正确比较浮点数的方法

    Java正确比较浮点数的方法

    这篇文章主要介绍了Java正确比较浮点数的方法,帮助大家更好的利用Java比较浮点数数据,感兴趣的朋友可以了解下
    2020-11-11
  • vue+springboot+shiro+jwt实现登录功能

    vue+springboot+shiro+jwt实现登录功能

    这篇文章主要介绍了vue+springboot+shiro+jwt实现登录功能,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04

最新评论