配置 hikari 连接池

Em *_* Ae 5 java spring-boot hikaricp azure-sql-database java-11

我的数据库有以下设置(我有多个数据库,因此它们是按spring.datasource层次结构配置的。

spring:
  datasource:
    db-write:
      url: jdbc:sqlserver://whatever.database.windows.net:1433;database=dbname;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;
      username: 'myusername'
      password: 'mynotsosecretpassword'
      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
Run Code Online (Sandbox Code Playgroud)

然后我在这里配置我的数据源

spring:
  datasource:
    db-write:
      url: jdbc:sqlserver://whatever.database.windows.net:1433;database=dbname;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;
      username: 'myusername'
      password: 'mynotsosecretpassword'
      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
Run Code Online (Sandbox Code Playgroud)

dataSourceDbWrite我正在根据我在方法中读取的属性在方法中配置我的 hikari 数据源dataSourcePropertiesDbWrite。我相信我需要在特定层次结构中配置属性,以便该dataSourceDbWrite方法可以轻松检测hikari. 那是对的吗?

这个层次结构会是什么?

此外,我如何以及在哪里可以找到可以为 hikari 配置的属性?连接超时?连接池大小等?

小智 10

我个人application.yml更喜欢配置 Hikari 的代码:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: {JDBC URL}
    username: {USERNAME}
    password: {PASSWORD}
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      minimum-idle: 5
      idle-timeout: 600000
      maximum-pool-size: 10
      auto-commit: true
      pool-name: HikariCorePool
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: select * from information_schema.tables limit 1
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,那段配置最初是由一位同事几年前编写的。我们没有更改它,只是复制并粘贴到那些年的任何新项目中。)

如果您想查看所有可配置字段,这些spring.datasource.hikari.*org.springframework.boot:spring-boot-autoconfigure:{VERSION}/META-INF/spring/spring-configuration-metadata.json可能会有所帮助。

javadoccom.zaxxer.hikari.HikariConfigMXBean也可以提供帮助。