领先一步
VMware 提供培训和认证,助力您的职业发展。
了解更多本文是 Simon BASLÉ(来自 Couchbase)的交叉发布博客。您可以在 Twitter (@simonbasle) 或 GitHub 上找到他。在开发者门户上了解更多关于 Couchbase 和 Couchbase Java SDK 的信息。
Spring Boot 1.4.0 MILESTONE 2
已经发布!现在是时候告诉大家 Spring Boot 团队成员和 Couchbase Java SDK 团队共同努力将 Couchbase 一等公民般地集成到 Spring Boot 中 :)
在 Spring Boot 1.4.0
中,Couchbase 成为 Spring Boot 生态系统的一等公民!
当你的 classpath 中存在 Couchbase SDK
时,Spring Boot 现在可以直接识别。在这种情况下,它会使用自动配置为你实例化 Cluster 和 Bucket bean。
Spring Boot 可以读取属性来进一步配置这些核心 SDK 类,甚至包括 CouchbaseEnvironment
!
以下引导属性被识别
spring.couchbase.bootstrap-hosts
spring.couchbase.bucket.name
spring.couchbase.bucket.password
环境调优(IO 端点、SSL 支持和默认同步 API 超时)通过以下属性暴露
spring.couchbase.env.endpoints.key-value
spring.couchbase.env.endpoints.query
spring.couchbase.env.endpoints.view
spring.couchbase.env.ssl.enabled
spring.couchbase.env.ssl.key-store
spring.couchbase.env.ssl.key-store-password
spring.couchbase.env.timeouts.connect
spring.couchbase.env.timeouts.key-value
spring.couchbase.env.timeouts.query
spring.couchbase.env.timeouts.view
现在这是一流的 ⭐️⭐️⭐️⭐️⭐️ 支持!
警告:请注意,在之前的里程碑版本中,引导属性的前缀是“
spring.*data*.couchbase
”,现在变为“spring.couchbase
”。
Spring 缓存抽象有一个 Couchbase 2.x 实现,couchbase-spring-cache
。
当 Java SDK 和 couchbase-spring-cache
Artifact 都存在于 classpath 中时,Spring Boot 现在能够识别这个缓存实现。
这与上一节很好地集成,因为缓存的默认底层存储 Bucket
就是由 Spring Boot 自动配置的 :)
注意:该缓存实现已从 Spring Data Couchbase 项目中分离出来,成为一个独立项目(在 Couchbase 的 GitHub 仓库中),以便它可以独立于 Spring Data 使用和发布。
提示:别忘了至少配置
spring.couchbase.bootstrap-hosts
属性。
CacheManager
的这个实现允许将来自多个缓存的数据存储到同一个 Couchbase Bucket 中,方法是自动在 Couchbase 中的键前加上每个缓存的名称作为前缀。
CouchbaseCacheManager
将自动复用 Spring Boot 自动配置的 Bucket
。只需添加一个属性来声明性地列出缓存名称,相应的缓存就会被预加载
spring.cache.type=couchbase
spring.cache.cache-names=foo,bar
五星级支持,我们是认真的!
您甚至可以将其配置为将不同缓存的数据存储到多个 bucket 中。然后可以使用流畅的构建器模式来配置这些缓存(例如,在 CacheManagerCustomizer<CouchbaseCacheManager>
中)。这个 CacheBuilder
还允许您进一步调整缓存,例如设置默认过期时间
@Configuration
public class CouchbaseCacheConfiguration {
private final Cluster cluster;
//inject the Cluster from Boot core Couchbase support
public CouchbaseCacheConfiguration(Cluster cluster) {
this.cluster = cluster;
}
@Bean
public Bucket anotherBucket() {
return this.cluster.openBucket("another", "secret");
}
@Bean
public CacheManagerCustomizer<CouchbaseCacheManager> cmCustomizer() {
return c -> {
c.prepareCache("biz", CacheBuilder
.newInstance(anotherBucket())
.withExpirationInMillis(2000));
};
}
}
这个实现可以使用视图来选择性地清除位于同一个 Bucket 中的缓存。
最后,它支持在请求时动态创建缓存。要激活此功能,只需省略声明任何缓存名称,并使用相关属性激活 Couchbase 缓存即可
spring.cache.type=couchbase
这将使用 Spring Boot 自动配置的 Bucket
作为所有动态创建缓存的默认 bucket。
使用 @Cacheable
的乐趣等着你?
Spring Data Couchbase 2.1.0
(Hopper 发布火车) 包含了几项修改,使与 Spring Boot 的集成变得轻而易举。
首先是常见的:默认情况下,Spring Boot 将自动配置 Spring Data Couchbase 使用它创建的 Bucket。这得益于将核心 SDK 配置部分分离到 CouchbaseConfigurer
类中,而真正特定于 Spring Data 的部分则位于新的基类 AbstractCouchbaseDataConfiguration
中。
如果你只使用 Spring Data,你可以继续使用 AbstractCouchbaseConfiguration
,它现在既是 CouchbaseConfigurer 也是 AbstractCouchbaseDataConfiguration。
但是,如果你使用 Spring Boot,它将自动配置一个 CouchbaseConfigurer
。你随时可以调整自己的 AbstractCouchbaseDataConfiguration
并将该配置器注入其中。
2.1.0 版本还包含一些新特性
touch
(刷新文档的过期时间)(DATACOUCH-59)@CreatedBy
注解, DATACOUCH-91)快去获取那个 ⭐️⭐️⭐️⭐️⭐️ 里程碑版本吧!
一如既往,欢迎提供反馈(可在 Spring Data 问题跟踪器、Spring Boot 问题跟踪器 或 Couchbase 论坛上提交)。
编码愉快!