将 maxConnectionLimit 设置为使用 Spring DataSourceBuilder.create() 手动创建的连接

Set maxConnectionLimit to Manually created connection using Spring DataSourceBuilder.create()

使用application.properties我们可以提供

spring.datasource.hikari.maximum-池大小=10

as spring 默认使用 Hikari 连接池。 但是当我们根据特定要求手动创建数据源时,我们不能使用 application.properties.

场景。

  1. 用户将动态配置数据源,此后连接对象应该可用。
  2. 为此,我们正在创建 DatasourceBuilder.create().build() 方法来创建数据源连接对象并将其设置到 bean 工厂中。
  3. 但是在使用 DataSourceBuilder.create().build() 方法创建数据源连接对象时,它会同时创建连接池和 10 个到数据库的连接。
  4. 我们想避免连接 pooing 并且只有一个连接。

我该怎么做?

您可以尝试设置 minimumIdle 属性。默认情况下,它设置为 maxPoolSize,因此最初会创建 10 个连接。

您可以参考此 link、https://github.com/brettwooldridge/HikariCP#frequently-used

中的 minimumIdle 部分

在创建自定义数据源时,我们可以创建 HikariDataSource 实例而不是 DataSource。

假设您正在使用 Spring 默认连接池 (Hikari)

public DataSource createCustomConnection(String driverClass, String url, String username, String password) { 
    HikariConfig config = new HikariConfig();
        config.setDriverClassName(driverClass);
        config.setJdbcUrl(url);
        config.setUsername(username);
        config.setPassword(password);
        config.setMaximumPoolSize(MENTIONED_TOTAL_CONNECTIONS);
        // Like this you can configure multiple properties here 
        
    HikariDataSource dataSource = new HikariDataSource(config);
    return dataSource;
}
DataSource dataSource = createCustomConnection(...) // Pass Parameters here

到这里你已经创建了同时创建一个连接的数据源。

了解更多信息https://github.com/brettwooldridge/HikariCP#initialization

谢谢。