![](/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.