Spring Boot Hikari 配置

Posted

技术标签:

【中文标题】Spring Boot Hikari 配置【英文标题】:Spring Boot Hikari configuration 【发布时间】:2019-10-28 04:18:30 【问题描述】:

我正在为 Spring Boot 应用程序配置 HikariCP,数据库是 Postgresql。

documentation 说: “我们建议使用 dataSourceClassName 而不是 jdbcUrl,但两者都可以接受。”

但是,下一行说: "注意:Spring Boot自动配置用户,需要使用基于jdbcUrl的配置。"

如果我们使用基于jdbcUrl 的配置并指定dataSourceClassName,那么jdbcUrl 将被忽略,如果我们不指定数据源-HikariDataSource 将被创建。所以他们建议在 Spring Boot 应用程序中使用 HikariDataSource

如果我们使用dataSourceClassName - 它将使用给定的属性创建(在我的例子中,它是PGSimpleDataSource 及其祖先BaseDataSource)。

这两种配置都适合我。

所以,我的问题是:

    HikariDataSourcePGSimpleDataSource(或任何其他推荐)有什么区别? 为什么建议在 Spring Boot 中使用基于 jdbcUrl 的配置(因此建议使用 HikariDataSource)?

【问题讨论】:

【参考方案1】:

    HikariCP 是一个连接池,非常好。我们已经在多个生产项目中使用它,它速度快而且效果很好。

    如果您想使用 HikariCP,请使用 HikariDataSource。 Spring Boot 已开始将其用作默认设置并推荐它(出于相同的原因:它既快速又可靠)。

如果您只使用 spring.datasource.url 的默认配置,它将使用 HikariCP 并且应该可以开箱即用。

但是,当您手动配置数据源时,Spring Boot 2 和 HikariCP 存在一个小问题。 HikariCP 需要 jdbcUrldataSourceClassName,但 Spring Boot 配置属性使用 url。 请参阅documentation 或this question。

【讨论】:

是的,这对我来说听起来很合理,但是为什么他们对 Spring Boot 和其他应用程序有不同的 DataSources 建议,同时在一个包中提供所有这些?

以上是关于Spring Boot Hikari 配置的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Spring Boot 中为 Hikari 设置 keepAlive Time 配置

Spring Boot JPA Repository 未释放 Hikari DB Connection

Spring Boot 如何为 Hikari Pool 和 jdbcTemplate 设置连接获取大小

可能考虑使用更短的 maxLifetime 值 - hikari 连接池 spring boot

带有PostgreSQL,Flyway和Hikari的Spring Boot 2:驱动程序声称不接受jdbcUrl

数据库故障后的 Hikari CP (Spring Boot) 连接恢复问题