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

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

对于与 Apache Geode M3 发布公告相关的延迟,我向 Spring 和 Apache Geode 社区表示歉意,但我非常激动和高兴地在此之后发布了 Apache Geode 1.0.0-incubating.M3 的 Spring Data。

您可以通过在应用的 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 解决它,请查看我在 8 月份 Apache Geode 俱乐部会议上的演讲。

问题/解决方案

问题的根源在于 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 社区中所有即将举行的活动。

查看全部