![](/img/trans.png)
[英]Handling MaxUploadSizeExceededException in java spring boot
[英]Handling Datastax Java driver CqlSession in Spring Boot
Datastax Java 驅動程序文檔說,為您的 Spring 引導應用程序創建一個 CqlSession 實例,因為構建 session 是一項昂貴的操作。
我想在 Spring Boot 中以有效的方式管理 CqlSession,以便 CqlSession 實例應該關閉而不是保持打開狀態,以釋放底層資源(TCP 連接、線程池......)。
驅動程序文檔 URL: https://docs.datastax.com/en/developer/java-driver/4.13/manual/core/
這是我的 CqlSession 實例 class。 我使用 Cqlsession 實例在我的 Spring 引導應用程序中運行 Cql 查詢,方法是將其作為依賴項注入到我的 @Service 和 @Repository 類中。
此外,我從不手動關閉我的 Cql session,而是讓 Spring 使用 @PreDestory 注釋處理它。 是否應該在執行 cql 查詢后立即關閉 session 還是應該允許 spring 如下代碼中所述處理它? 我已經意識到這樣做,再次構建 cqlsession 需要大約 1-1.5 秒的延遲,因此查詢運行速度非常慢。
@Configuration
public class CqlSessionInstance {
private CqlSession session;
@PostConstruct
private void initSession() {
getSession();
}
public final CqlSession getSession() {
if(session == null || session.isClosed()) {
session = CqlSession.builder().build();
}
return session;
}
@PreDestroy
public final void closeSession() {
if (session != null && !session.isClosed()) session.close();
}
}
讓我知道是否有更好的方法來管理 Spring 引導中的 CqlSession
在我看來,我建議您自己關閉CqlSession
,因為您知道何時作為特定請求執行,並且知道何時關閉它。
如果您使用注釋@PreDestroy
,您將依賴於 Spring 生命周期管理,因此很難確定“何時”您的組件將被銷毀,因此您的 session 已關閉。
我陷入了同樣的困境,何時關閉 session? 在銷毀前還是在每個請求之后?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.