Spring boot 在运行时更改Cassandra键空间

Spring boot 在运行时更改Cassandra键空间,spring-boot,cassandra,Spring Boot,Cassandra,是否有可能在运行时使用Spring Boot更改Cassandra键空间? 到目前为止,我有下面的代码,但问题是我只有一个会话bean: @Bean public CassandraSessionFactoryBean session() throws ClassNotFoundException { CassandraSessionFactoryBean session = new CassandraSessionFactoryBean(); session.setCluste

是否有可能在运行时使用Spring Boot更改Cassandra键空间? 到目前为止,我有下面的代码,但问题是我只有一个会话bean:

@Bean
public CassandraSessionFactoryBean session() throws ClassNotFoundException {
    CassandraSessionFactoryBean session = new CassandraSessionFactoryBean();
    session.setCluster(cluster().getObject());
    session.setKeyspaceName(getKeyspace());
    session.setConverter(converter());
    session.setSchemaAction(SchemaAction.CREATE_IF_NOT_EXISTS); 
    session.getObject().execute("USE " + getKeyspace());
    return session;
}
所以,实际上问题是,我可以拥有多个像上面返回的那样的bean并根据给定的键空间使用它们,还是可以拥有一个会话bean并在那里切换键空间?
我可以拥有返回的bean的句柄并在那里玩吗?

是的,你可以。我将设置第二个
会话
bean,用
@Qualifier

注释,这是一种方法,但假设我想做一些更动态的事情,比如使用从上面粘贴的方法获得的相同bean,然后使用该bean访问会话对象并在运行时更改键空间。可能吗?我还想知道Spring是如何使用这个bean的,在哪里?取决于您如何使用会话。。。它是否已连接到数据库?还是每次执行前都要连接?如果会话尚未连接到cassandra,您可能可以在每次执行之前更新密钥空间,否则您将浪费CPU周期断开和更新密钥空间并重新连接。作为一名开发人员,我希望管理2个会话bean。好的,我采用两个或多个会话的方法,这很可能是首选的解决方案,但我想知道是否没有办法在不断开连接的情况下使用在运行时更改键空间的仅一个会话?您可以尝试。。。您需要将
会话
放入您的
dao
,然后让它运行
session.setKeyspaceName(getKeyspace())
session.getObject().execute(“使用”+getKeyspace())都会显示。我会尝试一下,但每次都会获取一些关于更新键空间的指标,这样您就知道它将如何执行。