Spring Data Geode 1.0.0.APACHE-GEODE-INCUBATING-M3 发布

工程 | John Blum | 2016 年 10 月 11 日 | ...

我向 Spring 和 Apache Geode 社区道歉,相对于 Apache Geode M3 版本公告的发布有所延迟,但我非常激动和高兴地紧随其后发布 Spring Data for Apache Geode 1.0.0-incubating.M3

您可以通过在您的应用程序 Maven 或 Gradle 构建文件中包含以下依赖项,从 Maven Central 获取这些库…

Maven

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-geode</artifactId>
  <version>1.0.0.APACHE-GEODE-INCUBATING-M3</version>
</dependency>

Gradle

compile 'org.springframework.data:spring-data-geode:1.0.0.APACHE-GEODE-INCUBATING-M3'

包含 spring-data-geode 依赖项将传递性地引入所有必需的 Apache Geode 工件,因此您可以立即开始构建使用 Apache Geode 的 Spring 应用程序。

新功能

虽然 Apache Geode M2 和 M3 之间的功能变化不大(主要是 错误修复),但Spring Data Geode 中发生了许多变化。其中一项关键功能脱颖而出。

准备就绪

由于 Apache Geode(及其衍生产品 Pivotal GemFire)一直专注于提供足够的功能广度和灵活性来满足各种复杂的客户需求和用例(点击“用例”),因此用户很难尽可能快速、轻松地入门。尽管它具有更强的**一致性保证**,并且通常性能更好,但在使用同类替代解决方案时,很难与**开箱即用**的体验竞争。

要更深入地了解这个问题以及我们如何致力于为 Apache Geode 和 Pivotal GemFire 解决它,请观看我在八月Apache Geode Clubhouse 会议上的演讲。

问题/解决方案

问题根源在于 Apache Geode 缺乏一个有主见且一致的编程/配置模型,尤其是在应用程序开发方面。所以,我们真的不需要再看别的,Spring Framework 就是最好的选择。然而,这仍然留下了“主见”的问题。

Spring 再次为我们带来了 Spring Boot,这真是一件精美的工程,如此优雅,如此简单。而且,正如您将在下文看到的那样,它确实是Spring Data Geode 工作的一个灵感来源。

少说废话,直接看代码……

过去,Spring 开发者必须使用XMLJava 配置来配置 Geode,然后使用引导机制,如GfshSpring Boot 来启动。这甚至在指南中也有过演示。直到现在,两者之间都没有显著的优势。

从这个里程碑版本开始,Spring Data Geode 将包含一套新的注解,其形式/功能与 Spring Boot 注解非常相似且互补,但专门针对 SD/Apache Geode,并且只有一个简单的目标……

简而言之,就是为了让用户**尽快**、**轻松**地**上手**,实现**开箱即用**的体验!

那么,让我们再次以 XML 和 Java 配置示例来完成一次……

@SpringBootApplication
@PeerCacheApplication
@WithReplicateRegions("myDistributedMap")
public class ExampleApplication implements CommandLineRunner {

  public static void main(String[] args) {
    SpringApplication.run(ExampleApplication.class, args);
  }

  @Resource(name = "myDistributedMap")
  private Region<String, String> myDistributedMap;

  @Override
  public void run(String... strings) throws Exception {
    assertThat(myDistributedMap.put("key", "value")).isNull();
    assertThat(myDistributedMap.get("key")).isEqualTo("value");
    assertThat(myDistributedMap.putIfAbsent("somekey", "somevalue")).isNull();
    assertThat(myDistributedMap.replace("key", "value", "newvalue")).isTrue();
  }
}

非常容易。这个示例相当简单,但您可能会想象到一些应用程序配置(例如示例;只需遵循层级结构)会很快变得相当复杂。

这只是一个预告,敬请期待更多内容。

结论

未来会有许多不同的注解来以一致且健壮的方式解决所有独特的问题,提供开箱即用的默认设置以及许多便捷的“启用”功能。这个新的注解配置模型的许多细节仍在进行中,例如适当的示例和文档。

在此期间,我已着手开始一个参考实现,它将展示使用 Spring 和 Apache Geode 结合的许多特性和功能(例如新的注解配置模型)。

请关注我们即将发布的更多通信。

一如既往,我们非常欢迎您的反馈,您可以通过 JIRAStackOverflow 联系我们。

感谢大家!

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

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

查看所有