如何在Grails的datasource.groovy中设置Hikari连接属性
Grails 2.4.4 下Hikari连接池配置说明
核心结论
Hikari连接池自身参数(包括maxLifetime)不需要放在dbProperties节点下,你当前的配置位置是错误的。
配置节点规则
两个节点的职责完全不同:
properties节点:直接配置Hikari数据源本身的管控参数,比如连接生命周期、最大连接数、连接超时时间这类连接池层面的配置,都直接写在这一层dbProperties节点:仅用于存放传递给底层JDBC驱动的参数,比如MySQL驱动的useSSL、rewriteBatchedStatements这类驱动级配置才需要放在这里,Hikari本身的参数写在这里不会生效,会被直接透传给驱动后忽略。
你现有配置的问题
- 参数位置错误:
maxLifetime属于Hikari连接池参数,放在dbProperties下不会被Hikari识别 - 参数拼写错误:Hikari对应的参数名是
maxLifetime,你写的maxLifeTime大小写不匹配,会导致属性注入失败
正确配置示例
dataSource { pooled = true dbCreate = "update" url = "jdbc:mysql://localhost:3306/my_database" driverClassName = "com.mysql.jdbc.Driver" dialect = org.hibernate.dialect.MySQL5InnoDBDialect username = "username" password = "password" type = "com.zaxxer.hikari.HikariDataSource" properties { // Hikari连接池参数直接写在properties层 maxLifetime = 200000 // 单位毫秒 maximumPoolSize = 10 connectionTimeout = 30000 idleTimeout = 60000 // JDBC驱动参数放在dbProperties下 dbProperties { useSSL = false rewriteBatchedStatements = true characterEncoding = "utf8" } } }
注意:Grails 2.4.4注入数据源属性时,会严格匹配HikariConfig类的setter方法名(去掉set前缀后首字母小写),参数名拼写错误会导致配置静默失效,不会抛出明显报错。
内容的提问来源于stack exchange,提问作者user19256295
相关产品推荐
相关产品推荐

