2

我可以使用以下方法在我的 Spring Boot 应用程序中创建 DatabaseClient 和 TransactionalOperator:

@Autowired public App(ConnectionFactory factory) {
    DatabaseClient dc = DatabaseClient.create(factory);
    TransactionalOperator to = TransactionalOperator.create(new R2dbcTransactionManager(factory));
}

但是如何关闭 DatabaseClient 和 TransactionalOperator 并释放连接/资源?

这是在 Spring Boot 应用程序中为 R2DBC 创建数据库连接的最佳方式吗?

4

1 回答 1

2

TL;DR:除非您使用连接池,否则没有什么可关闭的。

Spring Data R2DBCDatabaseClient为每个调用的操作分配一个连接。它类似于JdbcTemplate要求它DataSource为您调用的每个方法创建一个Connection。一旦方法调用完成,它就会释放(关闭)连接。

同样适用于DatabaseClient。操作完成后,底层连接将关闭。

使用时TransactionalOperator@Transactional行为略有变化但类似于 JDBC:R2DBC 连接在活动事务期间绑定到事务本身,这使得DatabaseClient在事务完成之前重用相同的连接。事务完成后,绑定的连接被释放。

于 2019-09-07T13:01:59.737 回答