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 Central 获取这些组件,方法是在您的应用程序 Maven 或 Gradle 构建文件中包含以下依赖项...

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 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 社区中所有即将举行的活动。

查看全部