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

2023-12-03

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

Spring Boot 支持tomcat-jdbc, HikariCP and Commons DBCP它们本身的配置方式都是相同的吗?


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

要设置 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),您应该能够以相同的方式设置属性,但您需要查看该项目文档以了解可用的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring-Boot:如何设置 JDBC 池属性,例如最大连接数? 的相关文章

随机推荐

  • 如何允许某些特定IP地址访问我的WCF服务

    我有一个 WCF 服务返回 xml 我只想要一个 IP 地址来访问它 例如 10 0 0 5 有人可以告诉我我该怎么做吗 请告诉我除防火墙和 IIS 之外的其他内容 您需要添加 ip 过滤 如下所示 https stackoverflow
  • 将文本值输入到 div 中?

    假设我有这个文本框
  • IPv6 的示例数据?

    是否存在 IPv6 流量的示例数据集 例如Apache 日志还是流量分析日志 或者 是否有人有任何想法如何生成一个或 乐观地 现有工具来生成数据 理想情况下 我希望实际部署的示例地址与该范围内的地址数量和 或来自这些范围的预期流量成比例 即
  • 访问资源目录路径

    看起来 NSBundle mainBundle pathForResource name ofType png 对于 Images xcassets 资产目录内的资产 不返回任何内容 我也尝试过 NSBundle mainBundle pa
  • 雅虎 YQL RSS - 错误请求

    为了使用 jQuery 发出跨域 AJAX 请求 我尝试使用 YQL RSS select from rss where url https www top1000funds com feed most popular posts My c
  • C++中如何将字符串转换为char *?

    我怎样才能转换string in to char 我使用了以下方法 但它不起作用 在运行时它给我以下错误 运行时检查失败 3 变量 url 正在被使用而没有 正在初始化 尽管我已经将其初始化 如下面的代码所示 你能给我举个例子吗 char
  • 具有动态键的对象的 Apollo/GraphQL 字段类型

    假设我的 graphql 服务器想要以 JSON 形式获取以下数据 其中person3 and person5是一些 id persons person3 id person3 name Mike person5 id person5 na
  • JTable 基于隐藏列的排序

    我想排序JTable基于一个隐藏列的行 假设我有一个像这样的 JTable column1 column2 val1 val2 现在我又多了一个被隐藏的column3 我不想显示 当用户单击 Column2 时 它应该根据 Column3
  • 在 JavaScript 中创建特定时区的日期对象并将其转换为 UTC

    我的应用程序当前以以下格式存储特定事件的日期和时间 date 2022 05 06 time 00 00 12 00 AM 每个事件的时间还包含与其关联的时区 如果组织活动的人来自新加坡 那么时区将亚洲 新加坡 当我向与会者发送此活动的日历
  • 使用delphi以编程方式执行防病毒程序

    我编写了一个小应用程序来使用 indy 组件传输文件 现在我想在传输完成后启动防病毒程序来检查文件 下载完成后 如何执行客户端安装的防病毒程序 UPDATE下载文件时我需要实现类似于 Firefox 的功能 然后执行机器中安装的防病毒软件
  • 如何以编程方式设置拨号连接的“自动配置脚本”?

    我在 Internet 选项 gt 连接 中有一个拨号连接 我想以编程方式为其设置一个 自动配置脚本 连接设置之一 将其设置为 LAN 很容易 但我找不到有关将其设置为其他连接的任何信息 好的 我已经解决了 实际上 它以与存储 LAN 设置
  • 如何使用基于 JWT 的身份验证处理文件下载?

    我正在用 Angular 编写一个 Web 应用程序 其中身份验证由 JWT 令牌处理 这意味着每个请求都有一个包含所有必要信息的 身份验证 标头 这对于 REST 调用非常有效 但我不明白应该如何处理后端托管文件的下载链接 文件驻留在托管
  • 混合 JSON-LD CollectionPage 和 Schema.org 的微数据 `hasPart`

    下面的微数据标记工作得很好 Google 的结构化数据测试工具显示一个CollectionPage and WebSite WebPage作为孩子 span a href https springfield xxxx us Official
  • 如何在 C# 中使用 Delphi Dll(带 PChar 类型)

    下面是 Delphi DLL 代码 library Project2 uses SysUtils Classes R res function SimpleConv const s string string var i Integer b
  • PairGrid 与 Seaborn 中的 Hexbin 绘图

    我正在尝试在 Seaborn 网格中获取 hexbin 图 我有以下代码 Works in Jupyter with Python 2 Kernel matplotlib inline import seaborn as sns impor
  • 将图像图标从触摸位置动画到右上角?

    我正在开发 Android 在线购物应用程序 我必须应用一些动画 购物车图像显示在屏幕的右上角 屏幕上的项目列表中的每个项目都带有 添加到购物车 按钮 当用户按下此按钮时 我必须播放动画 我有一个固定图像 它应该从触摸位置动画到 购物车图像
  • 将 Jetty 8 升级到 Jetty 9

    我正在从 jetty 8 升级到 jetty 9 并且遇到了一些 API 中编译失败的问题 SslSelectChannelConnector 已被删除 从我可以看到 httpConfiguration 和 secureRequestCus
  • iText:单元格中的图像列表

    我想创建一个包含点列表的表格 我事先不知道我有多少个点 但如果它们溢出单元格 我希望它们换行 就像文本一样 我的代码是这样的 PdfPTable table new PdfPTable 1 table setTotalWidth new f
  • UIColor CMYK 和 Lab 值

    简单的问题 很可能复杂的答案 如何从 UIColor 对象获取 CMYK 和 Lab 值 如果有帮助的话 我知道其中的 RGB 值 我发现了有关获取 CMYK 值的信息 但我无法从中获取任何准确的值 尽管它无处不在 但我听说这不是一个很好的
  • Spring-Boot:如何设置 JDBC 池属性,例如最大连接数?

    Spring Boot 是一个非常棒的工具 但是当涉及到更高级的配置时 文档有点稀疏 如何设置数据库连接池的最大大小等属性 Spring Boot 支持tomcat jdbc HikariCP and Commons DBCP它们本身的配置