SpringBoot:如何设置JDBC池属性,如最大连接数?

SpringBoot是一个非常棒的工具,但是当涉及到更高级的配置时,文档有点稀疏。如何设置数据库连接池的最大大小等属性

Spring Boot本机支持tomcat jdbcHikariCPCommons DBCP它们的配置方式是否相同

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

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

spring.datasource.maxActive=5

如果愿意,还可以使用以下选项:

spring.datasource.max active=5

您可以通过这种方式设置任何连接池属性。下面是tomcatjdbc支持的属性的完整列表

为了更全面地理解它是如何工作的,您需要深入研究一下Spring引导代码

Spring Boot像这样构造数据源(参见这里,第102行):

@ConfigurationProperties(前缀=DataSourceAutoConfiguration.CONFIGURATION\u前缀)
@豆子
公共数据源数据源(){
DataSourceBuilder工厂=DataSourceBuilder
.create(this.properties.getClassLoader())
.driverClassName(此.properties.getDriverClassName())
.url(this.properties.getUrl())
.username(this.properties.getUsername())
.password(this.properties.getPassword());
返回factory.build();
}

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

此时,magic开始使用@ConfigurationProperties。此注释告诉Spring查找前缀为CONFIGURATION\u prefix(即Spring.datasource)的属性。对于以该前缀开头的每个属性,Spring将尝试调用具有该属性的数据源上的setter

Tomcat数据源是DataSourceProxy的扩展,它具有方法setMaxActive()

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

其他连接池呢

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

发表评论