为什么配置了某个数据连接池的 spring-boot-starter(比如druid) 和 shardingsphere-jdbc-spring-boot-starter 时候,系统启动会报错?

为什么我在配置了某个数据连接池的 spring-boot-starter(比如druid) 和 shardingsphere-jdbc-spring-boot-starter 时,系统启动会报错?求小问答告知。

感谢您的提问,问答君觉得这是一个很好的问题。面对这个问题,问答君是这么觉得的:

  1. 因为数据连接池的 starter(比如druid)可能会先加载并且其创建一个默认数据源,这将会使得
    ShardingSphere-JDBC 创建数据源时发生冲突。
  2. 解决办法为,去掉数据连接池的 starter 即可,sharing-jdbc 自己会创建数据连接池。

更多常见问题,可以参考官方 FAQ

具体报错信息能贴出来吗?

就我看来,在springboot内使用原生druid组件违反了约定大于配置的原则。在使用druid-spring-boot-starter等连接池的starter组件的时候,可以使用@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)来排除掉这些连接池的自动配置类。

1 个赞

我觉得官方文档应该给出来不能兼容的提醒,毕竟数据库连接池很多项目都在使用,且同时使用是durid第三方报错,很容易让人误以为是shadingsphere报的错

请参见ShardingSphere doc的FAQ,有针对druid-spring-boot-starter做说明。

京ICP备2021015875号