如何使用spring-boot-starter-data-r2dbc启用连接池?
我有一个具有 data-r2dbc 依赖项的 Spring Boot 应用程序。我使用 PostgreSQL 作为数据库。
所以我已经有了以下依赖项(gradle 表示法):
org.springframework.boot:spring-boot-starter-data-r2dbc:2.3.5.RELEASEio.r2dbc:r2dbc-postgresql
我需要为 R2DBC 连接启用连接池。不幸的是,我找不到任何详尽的手册来这样做。
根据这个相当过时的发行说明,我还必须添加io.r2dbc:r2dbc-pool
并使用spring.r2dbc.pool.*属性来配置池。
此外,根据此参考,我不需要手动打开池,因为如果r2dbc-pool在类路径中找到SB 将启用它。
够不够还是我错过了什么?
回答
回答我自己的问题。
TLDR
- 有
org.springframework.boot:spring-boot-starter-data-r2dbc:2.3.5.RELEASE足有连接池启用默认 - 无需
io.r2dbc:r2dbc-postgresql显式添加 :pool:在这种情况下不需要输入 URL
一些详细的发现。似乎有两种方法可以启用连接池:
- 将
:pool:驱动程序块放入 URL,然后io.r2dbc.pool.PoolingConnectionFactoryProvider#create将负责创建连接池。这在https://github.com/r2dbc/r2dbc-pool#getting-started 中有描述 - 没有
spring.r2dbc.pool.enabled=false在CONFIGS(这意味着它的缺席解释为true默认)。这样,连接池将由org.springframework.boot.autoconfigure.r2dbc.ConnectionFactoryConfigurations.Pool#connectionFactory. 我不确定,但它看起来像是对库特定:pool:选项的通用 Spring Boot 配置样式覆盖。
此选项是独立的且部分重叠,第二个优先。
第二个组件还评估:pool:URL 中 的存在(请参阅 参考资料org.springframework.boot.autoconfigure.r2dbc.ConnectionFactoryConfigurations.PooledConnectionFactoryCondition),如果找到,它将连接池的创建委托给第一个。
还有一个特殊的结论 -spring.r2dbc.pool.enabled=false如果:pool:URL 中有 ,则无论如何都会显式导致创建连接池。因此,禁用池化的唯一方法是同时拥有spring.r2dbc.pool.enabled=false和省略:pool:URL。
THE END
二维码