You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成Cassandra:停止应用后KeySpace自动删除问题排查

问题原因及解决方案

嗨,这个问题的根源其实就在你的CassandraConfig配置类里!

你重写了getKeyspaceDrops()方法,并且返回了包含DropKeyspaceSpecification.dropKeyspace(KEYSPACE)的列表:

@Override 
protected List<DropKeyspaceSpecification> getKeyspaceDrops() { 
    return Arrays.asList(DropKeyspaceSpecification.dropKeyspace(KEYSPACE)); 
}

Spring Data Cassandra在应用上下文关闭(也就是你停止Spring Boot应用)的时候,会执行这个方法返回的所有KeySpace删除操作。你明确指定了要删除myTestKeySpace,所以每次停应用都会把这个KeySpace删掉。

解决办法很简单,二选一就行:

  • 直接移除getKeyspaceDrops()方法的重写:
    如果你不需要在应用关闭时删除KeySpace,删掉这个方法就好,AbstractCassandraConfiguration的默认实现会返回空列表,不会执行删除操作。

  • 修改方法返回空列表:
    要是你想保留这个方法的重写(比如后续有其他逻辑),可以改成返回空列表:

    @Override 
    protected List<DropKeyspaceSpecification> getKeyspaceDrops() { 
        return Collections.emptyList(); 
    }
    

修改之后,再启动然后停止应用,myTestKeySpace就会保留在Cassandra里了。

内容的提问来源于stack exchange,提问作者hamed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:54:58