项目引入多个连接池,导致使用其他连接池,maven分析学习

这篇具有很好参考价值的文章主要介绍了项目引入多个连接池,导致使用其他连接池,maven分析学习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一步在命令行中执行

mvn  dependency:tree > excludeParentstart.log

如果你的settings文件不是项目使用的setting配置,那么就使用下面的命令

mvn -gs 你的路径/apache-maven-3.8.2/conf/settings-person.xml dependency:tree > excludeParentstart.log

然后打开这个输出的 excludeParentstart.log文件

然后得到了一堆密密麻麻的文件
项目引入多个连接池,导致使用其他连接池,maven分析学习
这个玩意怎么看呢?我们得先知道依赖加载顺序

  • 执行命令 mvn dependency:tree
    会输出Maven项目的依赖树,展示所有的依赖项和它们之间的关系。以下是加载顺序的一些概念和说明:

    父级依赖(Parent
    dependency):在Maven项目中,可以通过定义一个父级POM来集中管理一些通用依赖和配置,子模块POM继承了父级POM后就可以共享这些依赖和配置。因此,父级依赖会首先被加载,并且其依赖会在所有子模块之前被解析和加载。

    子模块依赖(Child module dependency):子模块的依赖会在其父级依赖和其他已经解析过的依赖之后被加载。

    传递性依赖(Transitive
    dependency):当一个依赖引入另一个依赖时,它们之间建立了一种“传递性依赖”的关系。比如,如果A依赖于B,而B依赖于C,则A会传递性地依赖于C。传递性依赖会在其直接依赖项之后被加载。

    冲突解决(Dependency conflict
    resolution):当多个依赖项引入不同版本的同一个库时,Maven需要解决依赖冲突。Maven解决冲突的方式是使用最短路径算法,在依赖树中找到最短的路径来解析依赖,从而确定使用哪个版本的库。

    综上所述,这些依赖项的加载顺序是:父级依赖 → 子模块依赖 → 直接依赖项 →
    传递性依赖。在加载依赖时,Maven还会进行依赖冲突解决,确保使用正确的库版本。

我们用到的也就是最短路径的话就时最高优先级。
举个例子。下面有两个连接池,druid和hikariCP。
项目引入多个连接池,导致使用其他连接池,maven分析学习
因为druid的路径比hikariCP短。
所以使用的是druid的连接池。

但是我想指定为hikariCP的连接池怎么办呢? 我需要在引入的这个项目里,加入exclude druid

            <dependency>
                <exclusions>
                    <exclusion>
                        <groupId>com.alibaba</groupId>
                        <artifactId>druid-spring-boot-starter</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

当然是最外层的配置,因为最外层配置优先级最高。

如果你是在内层有多个配置,那么在内层配置多个同样的exclude

不对还是有问题

具体

https://www.cnblogs.com/dxiaodang/p/14582672.html

依赖的三个原则
1路径最短,2声明顺序优先,3子集的优先级比父级的高

springboot-start默认使用的是hikari的连接池,但是在springboot自动装配连接池的时候,有一个条件
项目引入多个连接池,导致使用其他连接池,maven分析学习

也就是必须没有DataSource这个类型的bean
项目引入多个连接池,导致使用其他连接池,maven分析学习

datasource是一个接口,他的实现包含druid,所以导致hikari失效。
项目引入多个连接池,导致使用其他连接池,maven分析学习

导致nacos配置中的用户名与密码找不到

解决方式
在pom文件中对于druid的连接池进行去除druid的依赖

com.betterwood.systemconfig
system-config-api
${system.config.api.version}


com.alibaba
druid


文章来源地址https://www.toymoban.com/news/detail-502063.html

到了这里,关于项目引入多个连接池,导致使用其他连接池,maven分析学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介

    IDEA上面书写wordcount的Scala文件具体操作 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍 目录 系列文章目录 前言 一 准备工作 1.1 安装Maven 1.1.1 Maven安装配置步骤 1.1.2 解压相关的软件包 1.1.3 Maven 配置环境变量 1.1.4 配置Maven的私服 1.2 创建一个本地的MySQL数据

    2024年02月04日
    浏览(45)
  • 在maven项目中引入本地jar包

    1、在项目个目录下创建libs文件夹,放入jar包 2、打开File — Project Structure 3、点击Libraries,点击“+”,选择Java 4、选择jar包,点击OK 5、修改pom文件

    2024年02月11日
    浏览(32)
  • Maven项目中如何引入本地的jar包

    方法一 、 直接在pom文件中添加 方法二、手动通过添加jar包的方式加入 把jar包下载到本地,不知道jar包的groupId, artifactId等信息,则可采用此方法。 新建lib包,之后导入(直接build path)(idea:File→project structure→libraries→+jar包 , 选择java,然后选择本地的jar即可)

    2024年02月14日
    浏览(36)
  • Vue3 - 解决使用 Tailwindcss 后导致 UI 组件库样式受影响,引入后发现项目组件库的组件样式不对了(Element/Ant Design Vue/Naive UI/TDesign)

    网上的教程都无法解决,但本文可以帮助您快速解决该问题。 当项目引入 Tailwind css 后,使用 UI 组件库的某些组件时,发现有些样式丢失及显示错位、背景色丢失等问题, 频发于【按钮组件】背景色丢失 | 【message消息提示组件】样式位置变形等,严重的整个组件库样式都乱

    2024年02月07日
    浏览(48)
  • maven项目引入私有jar,并打包到java.jar中

    私有jar存放位置 maven依赖 maven build

    2024年03月11日
    浏览(49)
  • 关于引入maven项目后出现‘parent.relativePath’ of POM错误时的解决方法

    Springboot项目出现的依赖错误。 在Springboot项目启动时,项目报错‘parent.relativePath’ of POM问题,项目无法正常启动。    发生该问题的根本原因是因为在项目文件夹的外层包含着另一个项目,此时项目文件无法确定该文件的pom依赖是引用哪一个parent依赖导致的。推荐使用方法二

    2024年02月13日
    浏览(34)
  • eclipse maven 项目 如果有多个依赖项 时, 有的包 无法 publish 到 lib 的解决方法

    我的web项目引用了一些自己开发的maven 子工程 所以经常遇到一种问题 就是maven工程依赖多个子工程时 在发布到tomcat 临时目录时,有的包 无法 publish 到 lib 经过尝试 终于知道问题 1 我们的maven 子工程 可能没有报异常,但是 实际上 是有问题的 这个时候你可以选择 run as- maven ve

    2024年02月12日
    浏览(35)
  • 一则 TCP 缓存超负荷导致的 MySQL 连接中断的案例分析

    除了 MySQL 本身之外,如何分析定位其他因素的可能性? 作者:龚唐杰,爱可生 DBA 团队成员,主要负责 MySQL 技术支持,擅长 MySQL、PG、国产数据库。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文约 1200 字,预计阅读需要 3 分钟。

    2024年04月28日
    浏览(26)
  • 简述PHP中trait的使用和同时引入多个trait时同名方法冲突的处理

    PHP的类是单一继承模式,也就是每个类只能继承一个父类(基类)。 但有时需要引入更多通用(共用)的方法,同时这些方法又不适合集成到基类。 那么这时,就需要使用其他方法来引入这些方法。其中 trait ,就是方法之一。 trait是PHP5.4之后出现的一种代码复用方法,形式

    2023年04月26日
    浏览(26)
  • 关于JAVA Maven项目连接mysql数据库

      本文作为个人学习笔记 此处使用8.0.28版本,关于mysql更多依赖版本查阅:https://mvnrepository.com/artifact/com.mysql/mysql-connector-j 1、指定驱动器 本部分指定jdbc驱动器类名,使用Class.forName()以加载数据库驱动程序 2、指定数据库 本部分指定所需数据库的url链接,(注:在测试过程中

    2024年04月12日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包