Grails 5.2.4集成HikariCP数据库连接池失败求助
解决Grails 5.2.4(Spring Boot 2.7)集成HikariCP的思路
以下是针对你遇到问题的具体排查和解决步骤:
先确认是否需要手动添加HikariCP依赖
Spring Boot 2.7默认已将HikariCP作为内置连接池实现,Grails 5基于Spring Boot构建,你的项目可能已经通过Spring Boot starter引入了HikariCP。执行gradle dependencies查看依赖树,检查是否存在com.zaxxer:HikariCP,如果已存在,手动添加的依赖可能导致版本冲突,反而影响加载。调整数据源配置方式
Grails 5不再完全沿用Grails 3/4的dataSource.pooled配置逻辑,需要对齐Spring Boot的配置规则:- 在
grails-app/conf/application.yml或application.groovy中,明确指定数据源类型为HikariDataSource:spring: datasource: type: com.zaxxer.hikari.HikariDataSource url: jdbc:mysql://localhost:3306/your_database username: db_user password: db_pass hikari: maximum-pool-size: 15 connection-timeout: 30000 - 移除旧的
dataSource.pooled = true配置,改用Spring Boot的Hikari专属配置项(以spring.datasource.hikari.开头)。
- 在
排查冲突的连接池依赖
如果项目中存在其他连接池依赖(比如Tomcat JDBC、Commons DBCP2),Spring Boot会自动选择其中一个作为默认实现,可能跳过HikariCP。执行gradle dependencies检查,若发现其他连接池,通过exclude排除:implementation('org.grails.plugins:hibernate5') { exclude group: 'org.apache.tomcat', module: 'tomcat-jdbc' }开启HikariCP日志排查
修改grails-app/conf/logback.groovy,添加HikariCP的DEBUG日志配置,确认连接池是否初始化:logger('com.zaxxer.hikari', DEBUG, ['STDOUT'], false)启动项目后查看日志,若有HikariCP相关的初始化日志,说明已经加载;若无,继续排查类路径和配置问题。
强制指定HikariCP版本(如果需要)
若必须使用特定版本的HikariCP,先排除Spring Boot默认引入的版本,再手动添加你的目标版本:implementation('org.springframework.boot:spring-boot-starter-jdbc') { exclude group: 'com.zaxxer', module: 'HikariCP' } implementation 'com.zaxxer:HikariCP:5.0.1' implementation 'mysql:mysql-connector-java:8.0.22'
内容的提问来源于stack exchange,提问作者demon101
相关产品推荐
相关产品推荐

