首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring:如何设置JDBC池属性,比如最大连接数?

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

Stack Overflow用户
提问于 2014-08-29 17:12:24
回答 6查看 265.1K关注 0票数 97

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

Spring支持tomcat-jdbcHikariCPCommons DBCP,它们都是以相同的方式配置的吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-08-29 17:12:24

事实证明,设置这些配置属性是非常直接的,但是正式文件更通用,所以在专门搜索连接池配置信息时可能很难找到。

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

代码语言:javascript
复制
spring.datasource.maxActive=5

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

代码语言:javascript
复制
spring.datasource.max-active=5

可以以这种方式设置任何连接池属性。tomcat-jdbc

要更广泛地理解这一工作原理,您需要深入了解Spring代码。

Spring像这样构造DataSource (请看这里,第102行):

代码语言:javascript
复制
@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 DataSource是DataSourceProxy的一个扩展,它有方法setMaxActive()

这就是如何正确应用您的spring.datasource.maxActive=5

其他连接池呢?

我还没有尝试过,但是如果您正在使用另一个Spring支持的连接池(目前是HikariCP或Commons ),您应该能够以同样的方式设置属性,但是您需要查看项目文档才能知道可用的是什么。

票数 135
EN

Stack Overflow用户

发布于 2016-10-13 01:07:48

在Spring的当前版本(1.4.1.RELEASE)中,每个池数据源实现都有自己的属性前缀。

例如,如果您正在使用tomcat:

代码语言:javascript
复制
spring.datasource.tomcat.max-wait=10000

你可以找到这里的解释

代码语言:javascript
复制
spring.datasource.max-wait=10000

这已经没有效果了。

票数 36
EN

Stack Overflow用户

发布于 2018-11-16 01:46:06

在spring 2.x中,您需要引用提供程序特定的属性。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-connect-to-production-database

默认情况下,可以使用spring.datasource.hikari.maximum-pool-size设置hikari。

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25573034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档