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 解決問題,請查看我在八月的 Apache Geode Clubhouse Meeting 中的演講。

問題/解決方案

問題的根源在於 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 社群中所有即將舉辦的活動。

檢視全部