![](/img/trans.png)
[英]Cassandra Java datastax 2.1.8 Cannot connect to keyspace with quotes
[英]Cassandra connect to cluster if keyspace does not exists
當鍵空間不存在時,我無法連接到cassandra。 我不想在應用程序中對我的鍵空間進行硬編碼。 我想在application.yml中寫密鑰空間名稱(我正在使用Spring Boot)。 我想創建與鍵空間關聯的會話:
session = cluster.connect("keyspace");
我必須這樣做,因為我無法在@Accessor界面中自動裝配屬性。
@Accessor
public interface PropertyAccessor {
//cannot autowire this field
@Value("${database.keyspace}")
String keyspace = "";
所以我的問題是:
當鍵空間不存在時,如何連接到cassandra集群並獲得與鍵空間的會話對象關聯?
如何通過@Accessor界面中的spring屬性自動裝配屬性?
PS。 我正在使用casandra 3.7,所以我不能使用spring-data-cassandra。
例如,如果您創建了@Accessor注釋的CustomAccessorRepository
@Accessor
public interface CustomAccessorRepository {
@Query("select from custom where id=':id')
CustomObject findById(@Param("id") String id);
}
您可以只創建一個類並使用@Configuration對其進行注釋,在該類中創建一個@Bean來返回您的訪問器
@Configuration
public class CassandraConfig {
private Cluster cluster;
private Session session;
private MappingManager mappingManager;
@Value("${database.keyspace}")
private String keyspace;
public CassandraConfig(){
cluster = Cluster.builder()
.addContactPoints(nodes.split(","))
.withPort(port)
.build();
session = cluster.connect(keyspace)
mappingManager = new MappingManager(session);
}
@Bean
public CustomAccessorRepository customAccessorRepository(){
return mappingManager.createAccessor(CustomAccessorRepository.class);
}
}
之后,您可以將您的訪問器注入某些服務
@Autowired
private CustomAccessorRepository customAccessorRepository;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.