事实证明,设置这些配置属性非常简单,但是官方文档更通用,因此在专门搜索连接池配置信息时可能很难找到。
要设置 tomcat-jdbc 的最大池大小,请在 .properties 或 .yml 文件中设置此属性:
spring.datasource.maxActive=5
如果您愿意,还可以使用以下内容:
spring.datasource.max-active=5
您可以通过这种方式设置任何您想要的连接池属性。这是支持的属性的完整列表tomcat-jdbc.
要更广泛地理解它是如何工作的,您需要深入研究一下 Spring-Boot 代码。
Spring-Boot 像这样构造 DataSource (see here,第 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_PREFIX
(这是spring.datasource
)。对于以该前缀开头的每个属性,Spring 将尝试使用该属性调用 DataSource 上的 setter。
Tomcat 数据源是以下内容的扩展数据源代理,其中有方法setMaxActive()
.
这就是你的spring.datasource.maxActive=5
得到正确应用!
其他连接池呢
我还没有尝试过,但如果您使用其他 Spring-Boot 支持的连接池之一(当前为 HikariCP 或 Commons DBCP),您应该能够以相同的方式设置属性,但您需要查看该项目文档以了解可用的内容。