Spring Boot 2.0.1.RELEASE疑问:未显式引用Hikari却出现启动日志
Why HikariPool Logs Appear Without Explicit Dependencies in Spring Boot 2.0.1.RELEASE
这其实是Spring Boot 2.x版本的默认行为哦,我来给你拆解一下为什么会出现这种情况:
Spring Boot 2.x默认采用HikariCP作为连接池
从Spring Boot 2.0开始,官方就把HikariCP设为JDBC连接池的默认实现,替换了之前的Tomcat JDBC。只要你的项目里引入了spring-boot-starter-jdbc或者spring-boot-starter-data-jpa这类核心starter依赖,Maven/Gradle会通过依赖传递自动把HikariCP拉进来,完全不需要你手动在pom.xml或build.gradle里添加它的依赖。如何验证HikariCP的依赖来源
你可以用以下命令查看项目的依赖树,就能明确看到HikariCP是从哪个starter传递过来的:- Maven:执行
mvn dependency:tree,在输出里搜索HikariCP即可定位 - Gradle:执行
./gradlew dependencies(Windows下用gradlew.bat dependencies),同样搜索HikariCP就能找到路径
- Maven:执行
如果不需要HikariCP,怎么移除或替换
要是你想改用其他连接池(比如Tomcat JDBC、Druid),可以这么操作:- 排除HikariCP的传递依赖
以Maven为例,在jdbc/jpa starter中排除Hikari:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <exclusions> <exclusion> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </exclusion> </exclusions> </dependency> - 添加目标连接池的依赖
比如添加Tomcat JDBC的依赖:<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> </dependency> - 指定数据源类型(可选)
在application.properties或application.yml里明确指定要使用的数据源类型,确保Spring Boot加载正确的连接池:spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
- 排除HikariCP的传递依赖
内容的提问来源于stack exchange,提问作者en Peris
相关产品推荐
相关产品推荐

