Couchbase 成为 Spring Boot 1.4 的一等公民

工程 | Stéphane Nicoll | 2016年4月14日 | ...

这是来自 Couchbase 的 Simon BASLÉ 的一篇交叉发布博客。您可以在 Twitter (@simonbasle) 或 github 上找到他。在 开发者门户 上了解有关 Couchbase 和 Couchbase Java SDK 的更多信息。

Spring Boot 1.4.0 里程碑版本 2 发布了!现在是时候告诉您 Spring Boot 团队成员和 Couchbase Java SDK 团队之间共同努力,为 Couchbase 在 Spring Boot 中提供一流集成的成果了 :)

Spring Boot 1.4.0 中,Couchbase 成为 Spring Boot 生态系统中的一等公民!

Couchbase SDK 集成

Spring Boot 现在可以直接识别您的类路径中是否存在 Couchbase SDK。在这种情况下,它会使用自动配置为您实例化一个 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 Cache 实现

Spring Cache 抽象有一个 Couchbase 2.x 实现,couchbase-spring-cache

当 Java SDK 和 couchbase-spring-cache 工件都位于类路径上时,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 集成

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 并将配置器注入其中。

其他 Spring Data Couchbase 功能

2.1.0 版本还包含一些新功能

结论

快去获取那个⭐️⭐️⭐️⭐️⭐️里程碑版本吧!

与往常一样,欢迎提供反馈(在 Spring Data 问题跟踪器、Spring Boot 问题跟踪器Couchbase 论坛 上)。

编码愉快!

获取 Spring 新闻通讯

与 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部