如何抑制Java中MongoClient的“资源泄漏:client未关闭”警告?
解决MongoClient资源泄漏警告的注解方案
嘿,我来帮你搞定这个问题!你遇到的[Java] Resource leak: 'client' is never closed警告,对应的抑制注解是@SuppressWarnings("resource")。
先给你掰扯下背景:Java的静态代码分析工具会把MongoClient判定为需要手动关闭的资源(毕竟它实现了AutoCloseable接口),但MongoDB官方明确说明过,MongoClient是线程安全的全局实例,整个应用生命周期内只需要维护一个实例即可,完全不需要显式关闭。
所以你只需要在创建MongoClient的代码处加上这个注解就行,精准抑制这个不必要的警告,示例代码如下:
@SuppressWarnings("resource") MongoClient client = new MongoClient(uri);
如果这个实例是在方法内创建的,你也可以把注解加在方法上,但更推荐直接加在变量声明行,这样不会误抑制其他代码的警告。
另外提一句:要是你用的是MongoDB驱动4.0及以上版本,官方更推荐用MongoClients.create(uri)来创建客户端实例,但不管用哪种创建方式,处理这个警告的注解都是一样的。
内容的提问来源于stack exchange,提问作者Frido
相关产品推荐
相关产品推荐

