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 社群所有即將舉行的活動。

檢視所有