当前位置: 首页 > 面试题库 >

Spring-Boot:如何设置JDBC池属性(如最大连接数)?

段曦
2023-03-14
问题内容

Spring-Boot是一个非常出色的工具,但是涉及到更高级的配置时,文档很少。如何设置属性,例如数据库连接池的最大大小?

Spring-Boot支持tomcat-jdbcHikariCP并且Commons DBCP它们本身是否都以相同的方式配置?


问题答案:

事实证明,设置这些配置属性非常简单,但是官方文档更为通用,因此在专门搜索连接池配置信息时可能很难找到。

要设置tomcat-jdbc的最大池大小,请在.properties或.yml文件中设置以下属性:

spring.datasource.maxActive=5

如果愿意,还可以使用以下内容:

spring.datasource.max-active=5

您可以通过这种方式设置任何连接池属性。这是所支持的属性的完整列表tomcat- jdbc

为了更一般地理解它是如何工作的,您需要稍微深入一下Spring-Boot代码。

Spring-Boot像这样构造DataSource(请参见此处,第102行):

@ConfigurationProperties(prefix = DataSourceAutoConfiguration.CONFIGURATION_PREFIX)
@Bean
public DataSource dataSource() {
    DataSourceBuilder factory = DataSourceBuilder
            .create(this.properties.getClassLoader())
            .driverClassName(this.properties.getDriverClassName())
            .url(this.properties.getUrl())
            .username(this.properties.getUsername())
            .password(this.properties.getPassword());
    return factory.build();
}

通过检查类路径上的一系列已知类中的每一个,DataSourceBuilder负责确定要使用哪个池库。然后,它构造DataSource并将其返回给dataSource()函数。

至此,魔术开始了@ConfigurationProperties。此注释告诉Spring寻找带有前缀CONFIGURATION_PREFIXspring.datasource)的属性。对于以该前缀开头的每个属性,Spring都会尝试使用该属性在DataSource上调用setter。

Tomcat的数据源是的延伸DataSourceProxy,其具有方法setMaxActive()

这就是spring.datasource.maxActive=5正确应用您的方式!

那其他连接池呢

我还没有尝试过,但是如果您使用的是其他Spring-Boot支持的连接池(当前为HikariCP或Commons
DBCP),则应该能够以相同的方式设置属性,但是您需要查看项目文档以了解可用的内容。



 类似资料:
  • spring-引导是一个非常棒的工具,但是当涉及到更高级的配置时,文档就有点稀疏了。如何设置数据库连接池的最大大小等属性? spring-boot支持、和它们都是以相同的方式配置的吗?

  • 我在Spring JDBC中使用Spring Boot 1.5.4。 使用Spring JDBC的Spring Boot微服务在尝试执行HTTP PUT时(在一群用户尝试执行HTTP PUT后)会出现以下问题,该问题会逐渐进入Spring JDBC调用: pom.xml: 我猜我需要设置一个JDBC连接池... 在我的application.properties设置中,(我有两个不同的数据库——一

  • 在OkHttp中,我找不到设置硬最大连接池大小的方法。从留档https://square.github.io/okhttp/3.x/okhttp/okhttp3/ConnectionPool.html很明显,您可以设置最大空闲连接,但不能设置整体最大值。这意味着在高负载下,它可以增长超过任何限制。 有没有办法最大化池?如果没有,为什么没有?

  • 我有一个问题,在通过tomcat web应用程序应用户请求重置MySQL数据库后,我会收到tomcat异常。到目前为止,我已尝试将其分解为设置、问题和我的分析,以帮助任何试图阅读本文的人。 重置基本上包括从java代码调用bash脚本以: 删除根mysql用户密码 加载数据库的旧版本 在上面运行一些脚本 恢复所有密码 这是一个用户启动的过程,通常将数据库恢复到以前的状态,但它也用于从另一个系统导入

  • 我创建了一个Spring启动应用程序,使用Spring启动启动数据elasticsearch连接到elasticsearch。我想配置此应用程序设置连池。如何配置application.properties以支持它?

  • 根据这个留档: 29.1.1嵌入式数据库支持 Spring Boot可以自动配置嵌入式H2、HSQL和Derby数据库。您不需要提供任何连接URL,只需包含要使用的嵌入式数据库的构建依赖项。 和 29.1.2与生产数据库的连接 生产数据库连接也可以使用池化DataSource自动配置。 数据源配置由spring中的外部配置属性控制。数据源*。例如,您可以在应用程序中声明以下部分。特性: [提示]您