优雅地关闭资源,try-with-resource语法和lombok@Cleanup
資源的打開就需要對應的關閉,但我們常會忘記關閉資源,或在多處代碼關閉資源感到雜亂,有沒有簡潔的關閉方法呢?
自動關閉資源類需實現AutoCloseable接口和配合try-with-resource語法糖使用
public class YSOAPConnection implements AutoCloseable {
private SOAPConnection connection;
public static YSOAPConnection open(SOAPConnectionFactory soapConnectionFactory) throws SOAPException {
YSOAPConnection ySoapConnection = new YSOAPConnection();
SOAPConnection connection = soapConnectionFactory.createConnection();
ySoapConnection.setConnection(connection);
return ySoapConnection;
}
public SOAPMessage call(SOAPMessage request, Object to) throws SOAPException {
return connection.call(request, to);
}
@Override
public void close() throws SOAPException {
if (connection != null) { connection.close(); }
}
}
//自動關閉的資源類使用示例
try (YSOAPConnection soapConnection=YSOAPConnection.open(soapConnectionFactory)){
SOAPMessage soapResponse = soapConnection.call(request, endpoint);
…//數據操作
} catch (Exception e) {
log.error(e.getMessage(), e);
…
}
lombok注解@Cleanup,對象生命周期結束時會調用public void close();對象需實現AutoCloseable接口
import lombok.Cleanup;
@Cleanup // @Cleanup的使用
YSOAPConnection soapConnection=YSOAPConnection.open(soapConnectionFactory)
總結
以上是生活随笔為你收集整理的优雅地关闭资源,try-with-resource语法和lombok@Cleanup的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA.Properties了解一下
- 下一篇: 资源不关闭,会导致什么最坏的结果