Couchbase – это документоориентированная распределенная многомодельная база данных NoSQL с открытым исходным кодом, оптимизированная для интерактивных приложений. В добавок Spring Boot предусматривает автоконфигурацию для Couchbase и абстракции, предоставляемые через Spring Data Couchbase. Для удобного сбора зависимостей существуют "стартовые пакеты" spring-boot-starter-data-couchbase
и spring-boot-starter-data-couchbase-reactive
Подключение к Couchbase
Можно получить Cluster
, добавив Couchbase SDK и определенную конфигурацию. Свойства spring.couchbase.*
можно использовать для настройки соединения. Как правило, указывается строка подключения, имя пользователя и пароль, как это показано в следующем примере:
spring.couchbase.connection-string=couchbase://192.168.1.123
spring.couchbase.username=user
spring.couchbase.password=secret
spring:
couchbase:
connection-string: "couchbase://192.168.1.123"
username: "user"
password: "secret"
Также можно настроить некоторые параметры ClusterEnvironment
. Например, в следующей конфигурации изменяется параметр времени ожидания, используемый для открытия нового Bucket
, а также активируется поддержка протокола SSL:
spring.couchbase.env.timeouts.connect=3s
spring.couchbase.env.ssl.key-store=/location/of/keystore.jks
spring.couchbase.env.ssl.key-store-password=secret
spring:
couchbase:
env:
timeouts:
connect: "3s"
ssl:
key-store: "/location/of/keystore.jks"
key-store-password: "secret"
spring.couchbase.env.*
для получения более подробной информации. Чтобы получить больше контроля, можно использовать один или несколько бинов ClusterEnvironmentBuilderCustomizer
.
Репозитории Spring Data Couchbase
Spring Data содержит средства поддержки репозиториев для Couchbase.
Автоконфигурируемый экземпляр CouchbaseTemplate
можно внедрять так же, как и любой другой бин Spring, при условии наличия бина CouchbaseClientFactory
. Это возможно, если имеется описанный выше Cluster
, а для бакета (bucket) задано имя:
spring.data.couchbase.bucket-name=my-bucket
spring:
data:
couchbase:
bucket-name: "my-bucket"
В следующих примерах показано, как внедрить бин CouchbaseTemplate
:
@Component
public class MyBean {
private final CouchbaseTemplate template;
public MyBean(CouchbaseTemplate template) {
this.template = template;
}
}
@Component
class MyBean(private val template: CouchbaseTemplate) {
}
Есть несколько бинов, которые можно определить в собственной конфигурации, чтобы отменить те, которые предусмотрены автоконфигурацией:
-
Бин
CouchbaseMappingContext
, помеченный аннотацией@Bean
, с именемcouchbaseMappingContext
. -
Бин
CustomConversions
, помеченный аннотацией@Bean
, с именемcouchbaseCustomConversions
. -
Бин
CouchbaseTemplate
, помеченный аннотацией@Bean
, с именемcouchbaseTemplate
.
Чтобы избежать жесткого кодирования этих имен в собственной конфигурации, можно использовать BeanNames
, предусмотренные Spring Data Couchbase. Например, можно настроить используемые преобразователи следующим образом:
@Configuration(proxyBeanMethods = false)
public class MyCouchbaseConfiguration {
@Bean(BeanNames.COUCHBASE_CUSTOM_CONVERSIONS)
public CouchbaseCustomConversions myCustomConversions() {
return new CouchbaseCustomConversions(Arrays.asList(new MyConverter()));
}
}
@Configuration(proxyBeanMethods = false)
class MyCouchbaseConfiguration {
@Bean(BeanNames.COUCHBASE_CUSTOM_CONVERSIONS)
fun myCustomConversions(): CouchbaseCustomConversions {
return CouchbaseCustomConversions(Arrays.asList(MyConverter()))
}
}
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ