我现在给你举个例子。我有一个来自 hikaricp 库的数据库连接池:
HikariDataSource dataSource = new HikariDataSource(...);
// работа с dataSource
dataSource.close();
在这种情况下dataSource,它是必须使用close.
但我不喜欢标准的jdbc,我为它做了一个包装:
HikariDataSource dataSource = new HikariDataSource(...);
JDBCWrapper jdbcWrapper = new JDBCWrapper(dataSource);
// работа с wrapper
wrapper.close();
dataSource.close();
该类JDBCWrapper是用于处理的包装器jdbc。但是在它内部创建了自己的资源,例如异步请求的线程池,所以这个包装器也是一个资源,并且有一个close释放它们的方法。
问题:包装器JDBCWrapper在调用其方法close时是否也应该释放dataSource?
一方面,dataSource它在wrapper里面,JDBCWrapper也应该被释放,另一方面,这个资源,从wrapper的角度来看,是“从外面”获得的,wrapper怎么知道,也许有人否则需要从外部获得此资源。
如果有的话,我不是在寻找数据库工具,我想解析这个特定的例子。
正如我所提到的,该系统是
如果您创建了一个对象,那么请注意它的成功处置(删除不必要的引用,以便 GC 成功运行)。如果对象通过 Dependancy Injection 接收,那么请善意地使用它并将其返回原始状态。
是的,在这个版本中
在这个变体中,没有
PS。个人观点,请勿吐槽