我注意到 Springboot 将
CqlSession
公开为具有默认范围的 bean(每个上下文一个 bean)。
https://github.com/spring-projects/spring-boot/blob/c3c82bd220b39998e5dc483db55532092ace1b3b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cassandra/CassandraAutoConfiguration .java#L105-L110
@Bean
@ConditionalOnMissingBean
@Lazy
public CqlSession cassandraSession(CqlSessionBuilder cqlSessionBuilder) {
return cqlSessionBuilder.build();
}
同时 Cassandra 文档指出: https://docs.datastax.com/en/developer/java-driver/4.9/manual/core/
CqlSession ...它是线程安全的,您应该创建一个实例(每个目标 Cassandra 集群),并在整个应用程序中共享它
那么用
CqlSession
注释 @ApplicationScoped
不是有意义吗?
我同意用
@ApplicationScoped
进行注释是有意义的,因为 CqlSession
bean 应该只创建一次。干杯!