Cassandra — це розподілена система керування базами даних з відкритим вихідним кодом, призначена для обробки великих обсягів даних на безлічі типових серверів. На додаток Spring Boot передбачає автоконфігурацію для Cassandra та абстракції, що надаються через ресурс. Для зручного збирання залежностей існує "стартер" spring-boot-starter-data-cassandra.

Підключення до Cassandra

Можна впровадити автоконфігурований CassandraTemplate або екземпляр CqlSession з Cassandra так само, як і будь-який інший бін Spring. Властивості spring.data.cassandra.* можна використовувати для налаштування з'єднання. Зазвичай вказується keyspace-name та contact-points, а також ім'я локального центру даних, як показано в наступному прикладі:

Properties
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1:9042,cassandrahost2:9042
spring.data.cassandra.local-datacenter=datacenter1
Yaml
spring:
  data:
    cassandra:
      keyspace-name: "mykeyspace"
      contact-points: "cassandrahost1:9042,cassandrahost2:9042"
      local-datacenter: "datacenter1"

Якщо порт однаковий для всіх контактних точок, можна скористатися скороченням та вказати лише імена хостів, як показано в наступному прикладі:

Properties
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2
spring.data.cassandra.local-datacenter=datacenter1
Yaml
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:

Java
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);
    }
}
Kotlin
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.