首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用spring starter r2dbc启用连接池?

如何使用spring starter r2dbc启用连接池?
EN

Stack Overflow用户
提问于 2020-12-15 09:22:17
回答 2查看 4.3K关注 0票数 3

我有一个具有数据-r2dbc依赖关系的Spring应用程序。我使用PostgreSQL作为DB。

因此,我已经有了以下依赖项(gradle表示法):

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

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

根据这个非常过时的发布说明,我还必须添加io.r2dbc:r2dbc-pool并使用spring.r2dbc.pool.*属性来配置池。

而且,根据本参考,我不需要手动打开池,因为如果在类路径上找到r2dbc-pool,SB将启用它。

够了吗还是我错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-16 09:20:19

回答我自己的问题。

TLDR

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

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

  1. :pool:驱动程序块放入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配置样式覆盖。

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

第二个组件也评估:pool:在URL中的存在(请参见org.springframework.boot.autoconfigure.r2dbc.ConnectionFactoryConfigurations.PooledConnectionFactoryCondition),如果发现它,则将创建连接池委托给第一个。

还有一个奇怪的结论--如果URL中有一个spring.r2dbc.pool.enabled=false,那么使用显式的:pool:就会创建一个连接池。因此,禁用池的唯一方法是拥有spring.r2dbc.pool.enabled=false,同时在:pool:中省略:pool:

票数 8
EN

Stack Overflow用户

发布于 2021-12-10 20:59:13

下面的代码适用于我

代码语言:javascript
复制
String url = "r2dbc:postgres://user:password@hostname:5432/testdb?ApplicationName=myapp";
ConnectionFactory ret= ConnectionFactories.get(url);

ConnectionPoolConfiguration poolConfiguration = ConnectionPoolConfiguration.builder(ret)
                .initialSize(5)                        .maxSize(10).maxIdleTime(Duration.ofMinutes(5)).build();

ConnectionPool pool = new ConnectionPool(poolConfiguration);

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

https://stackoverflow.com/questions/65303082

复制
相关文章

相似问题

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