Cassandra – это распределенная система управления базами данных с открытым исходным кодом, предназначенная для обработки больших объемов данных на множестве типовых серверов. В добавок Spring Boot предусматривает автоконфигурацию для Cassandra и абстракции, предоставляемые через Spring Data Cassandra. Для удобного сбора зависимостей существует "стартер" spring-boot-starter-data-cassandra
.
Подключение к Cassandra
Можно внедрить автоконфигурируемый CassandraTemplate
или экземпляр CqlSession
из Cassandra так же, как и любой другой бин Spring. Свойства spring.data.cassandra.*
можно использовать для настройки соединения. Как правило, указывается keyspace-name
и contact-points
, а также имя локального центра данных, как показано в следующем примере:
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1:9042,cassandrahost2:9042
spring.data.cassandra.local-datacenter=datacenter1
spring:
data:
cassandra:
keyspace-name: "mykeyspace"
contact-points: "cassandrahost1:9042,cassandrahost2:9042"
local-datacenter: "datacenter1"
Если порт одинаков для всех контактных точек, можно воспользоваться сокращением и указать только имена хостов, как показано в следующем примере:
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2
spring.data.cassandra.local-datacenter=datacenter1
spring:
data:
cassandra:
keyspace-name: "mykeyspace"
contact-points: "cassandrahost1,cassandrahost2"
local-datacenter: "datacenter1"
9042
. Если нужно сконфигурировать порт, используйте spring.data.cassandra.port
.Драйвер для Cassandra имеет свою собственную конфигурационную инфраструктуру, которая загружает application.conf
в корень classpath.
Spring Boot не осуществляет поиска такого файла по умолчанию, но может загружать его с помощью spring.data.cassandra.config
. Если свойство одновременно присутствует в spring.data.cassandra.*
и в конфигурационном файле, значение в spring.data.cassandra.*
имеет более высокий уровень старшинства.
Для более глубокой настройки драйверов можно регистрировать произвольное количество бинов, реализующих DriverConfigLoaderBuilderCustomizer
. CqlSession
можно настроить с помощью бина типа CqlSessionBuilderCustomizer
.
CqlSessionBuilder
для создания нескольких бинов CqlSession
, имейте в виду, что средство сборки является изменяемым, поэтому следует убедиться, что для каждой сессии внедряется новая копия.В следующем листинге кода показано, как внедрить бин Cassandra:
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
private final CassandraTemplate template;
public MyBean(CassandraTemplate template) {
this.template = template;
}
// ...
public long someMethod() {
return this.template.count(User.class);
}
}
import org.springframework.data.cassandra.core.CassandraTemplate
import org.springframework.stereotype.Component
@Component
class MyBean(private val template: CassandraTemplate) {
// ...
fun someMethod(): Long {
return template.count(User::class.java)
}
}
Если вы добавите свой собственный бин типа CassandraTemplate
, помеченный аннотацией @Bean
, он заменит шаблон по умолчанию.
Репозитории Spring Data Cassandra
Spring Data содержит средства поддержки репозиториев для Cassandra. В настоящее время они более ограничены, чем аналогичная поддержка репозиториев для JPA, рассмотренная ранее, и требует аннотирования методов поиска с помощью аннотации @Query
.