我可以使用以下命令在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创建数据库连接的最佳方法吗?
最佳答案
TL; DR:除非您使用connection pool,否则没有任何要关闭的内容。
Spring Data R2DBC的DatabaseClient
为每个调用的操作分配一个连接。它与JdbcTemplate
相似,后者要求其DataSource
为您调用的每个方法创建一个Connection
。方法调用完成后,将释放(关闭)连接。
同样适用于DatabaseClient
。操作完成后,基础连接将关闭。
使用TransactionalOperator
或@Transactional
时,行为上会有细微变化,但与JDBC类似:R2DBC连接在活动事务期间绑定到事务本身,这使DatabaseClient
重用相同的连接,直到事务完成。事务完成后,绑定的连接被释放。