【发布时间】:2021-05-07 13:43:39
【问题描述】:
Sonar 抱怨,因为 RestHighLevelClient 没有明确关闭,但我使用的是 spring-data,并且存储库对我透明地使用了客户端。
我有一个配置类
@Configuration
@EnableElasticsearchRepositories(basePackages = "foo.package.repository")
public class RestClientESConfig extends AbstractElasticsearchConfiguration {
// elastic search host
@Value("${spring.elasticsearch.rest.uris}")
private String elasticsearchHost;
@Override
public RestHighLevelClient elasticsearchClient() {
return RestClients.create(
ClientConfiguration.builder()
.connectedTo(elasticsearchHost)
.build())
.rest();
}
}
声纳说:
资源应该关闭
拦截器 java:S2095
实现 Closeable 接口或其超接口 AutoCloseable 的连接、流、文件和其他类在使用后需要关闭。此外,必须在 finally 块中进行关闭调用,否则异常可能会阻止调用。最好,当类实现 AutoCloseable 时,应使用“try-with-resources”模式创建资源,并自动关闭。***
我可以做些什么来避免这个声纳阻塞问题?
【问题讨论】:
标签: elasticsearch sonarqube spring-data