gpt4 book ai didi

java - 如何使用 spring-boot-starter-data-r2dbc 启用连接池?

转载 作者:行者123 更新时间:2023-12-05 00:55:09 26 4
gpt4 key购买 nike

我有一个具有 data-r2dbc 依赖项的 Spring Boot 应用程序。我使用 PostgreSQL 作为数据库。
所以我已经有了以下依赖项(gradle notation):

  • org.springframework.boot:spring-boot-starter-data-r2dbc:2.3.5.RELEASE
  • io.r2dbc:r2dbc-postgresql

我需要为 R2DBC 连接启用连接池。不幸的是,我找不到任何详尽的手册来做到这一点。

根据这个相当过时的release notes我还必须添加 io.r2dbc:r2dbc-pool并使用 spring.r2dbc.pool.* 属性来配置池化。

另外,根据 this reference我不需要手动打开池,因为如果在类路径中找到 r2dbc-pool,SB 将启用它。

够了还是我错过了什么?

最佳答案

回答我自己的问题。

TLDR

  • 拥有 org.springframework.boot:spring-boot-starter-data-r2dbc:2.3.5.RELEASE 足以默认启用连接池
  • 无需显式添加io.r2dbc:r2dbc-postgresql
  • 在这种情况下,不需要将 :pool: 放在 URL 中

一些详细的发现。似乎有两种方法可以启用连接池:

  1. :pool: 驱动程序 block 放入 URL,然后 io.r2dbc.pool.PoolingConnectionFactoryProvider#create 将负责创建连接池。这在 https://github.com/r2dbc/r2dbc-pool#getting-started 中有描述。
  2. 在配置中没有 spring.r2dbc.pool.enabled=false (意味着它的缺失默认被解释为 true)。这样,org.springframework.boot.autoconfigure.r2dbc.ConnectionFactoryConfigurations.Pool#connectionFactory 将创建一个连接池。我不确定,但它看起来像是对库特定 :pool: 选项的通用 Spring Boot 配置样式覆盖。

此选项是独立的,部分重叠,第二个优先。

第二个组件还评估 URL 中是否存在 :pool:(请参阅 org.springframework.boot.autoconfigure.r2dbc.ConnectionFactoryConfigurations.PooledConnectionFactoryCondition)如果找到,它将连接池的创建委托(delegate)给第一个。

还有一个特殊的结论 - 如果存在 :pool:,那么明确的 spring.r2dbc.pool.enabled=false 会导致创建连接池在网址中。因此,禁用池的唯一方法是在 URL 中同时设置 spring.r2dbc.pool.enabled=false 并省略 :pool:

关于java - 如何使用 spring-boot-starter-data-r2dbc 启用连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65303082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com