Spring Data REST 1.1.0.M1 釋出

釋出 | Jon Brisbin | 2013年3月11日 | ...

Spring Data 團隊很高興地宣佈,在利用 RESTful 語義將領域物件匯出到 Web 方面邁出了重要一步:Spring Data REST 1.1.0.M1 現已在 SpringSource 里程碑儲存庫中提供。

Spring Data REST 主頁 | GitHub 上的原始碼 | 參考文件

將領域物件匯出到 Web

Spring Data REST 是一組 Spring MVC 元件,您可以將其新增到您自己的 Spring MVC 應用程式中,它使用 RESTful、HATEOAS 語義將您的 Spring Data Repository 匯出到 Web。它透過將 Repository 匯出到 RESTful URL 來提供一致的互動 API,這些 URL 可以通過幾種不同的方式進行配置。

Spring Data REST 支援頂級實體(由 Spring Data Repository 直接管理的那些領域物件)的 CRUD 操作,只需編寫一行程式碼來定義一個擴充套件 Spring Data CrudRepository 介面的介面。完成此操作後,您的實體將具有完整的 RESTful 語義。您可以使用遵循 HATEOAS 原則的可發現標準 URL 建立新實體、更新現有實體和刪除實體。這意味著訪問您的 Spring Data REST 應用程式的使用者代理無需事先了解您正在匯出的資源。它可以透過對 JSON 中提供的 URL 進行連續呼叫來發現存在的實體以及這些實體上存在的關係。這些“連結”是 HATEOAS REST 應用程式的真正基礎和強大之處。

徹底的改變

1.1 版本幾乎是從頭開始重寫的。它不僅比 1.0 更容易配置,並且更好地符合 Spring MVC 對過渡到 Spring 3.2 的預期,而且 Spring Data REST 內部最大的變化是它現在支援除了 JPA 之外的其他型別的 Spring Data Repository 實現。無論使用何種後端資料儲存,CRUD 和管理關係(如果資料儲存支援)的 HTTP 語義都保持不變。

這意味著現在可以在同一個 Spring Data REST 應用程式中匯出 JPA 實體和 MongoDB 實體,並使用通用 URL 結構以及所有實體和集合的標準 Spring HATEOAS 資源表示來訪問這些實體。訪問這些 RESTful URL 的使用者代理無需瞭解後端實體由哪個資料儲存管理,最重要的是,您無需編寫任何程式碼即可獲得此功能!

MongoDB 支援

Spring Data REST 1.1 現在支援匯出 MongoDB CrudRepository 實現。與 JPA 實體相同的 HTTP 語義適用於 MongoDB @Document 實體。當然支援 GET、POST、PUT、DELETE,也支援 @DBRef。您可以使用 GET、POST、PUT 和 DELETE 檢視和管理兩個文件之間的關係,並且可以根據您的 @Query 定義匯出查詢方法。請參考 spring-data-mongodb 參考文件,瞭解物件對映與 JPA 風格對映的區別以及查詢定義的工作方式的完整詳細資訊。

Gemfire 支援

Spring Data REST 1.1 現在支援將使用高效能 Gemfire 資料庫 的實體匯出到不同的區域。閱讀 Spring Data Gemfire 文件,瞭解大量配置選項的完整解釋以及 Gemfire 中 POJO 對映與其他對映技術的不同之處。

Neo4J 支援即將推出

Spring Data REST 1.1 現已準備好支援 Neo4J GraphRepository,並將在 spring-data-neo4j 的下一個版本 2.3 中實現。當該版本普遍可用時(預計在 Spring Data REST 1.1 RELEASE 普遍可用時或之前),您將能夠使用標準的 HATEOAS 語義訪問 @NodeEntity 及其關係,就像您使用其他資料儲存一樣。

將其新增到您現有的應用程式

Spring Data REST 的設計方式是,如果您願意,可以為 Spring Data REST 應用程式建立整個應用程式。畢竟,它只是一個標準的 Spring MVC Web 應用程式。但是當您將 Spring Data REST 新增到您自己的服務時,事情會變得非常有趣。

Spring HATEOAS 作者 Oliver Gierke 建立了一個示例應用程式,演示了 HATEOAS 原則在現代 Web 應用程式中的使用。它被稱為 spring-restbucks,是 Jim Webber、Savas Parastatidis 和 Ian Robinson 在《REST 實戰》( Systematic Theology of REST services: REST in Practice) 中描述的 Restbucks 應用程式的實現。

混合 REST 服務

透過將 Spring Data REST 與您的其他 RESTful 服務混合使用,您可以在 Spring Data REST 匯出的領域物件(您無需編寫任何程式碼即可公開這些物件)與不代表實際實體而是代表某個過程的服務之間實現無縫整合。您可以在 spring-restbucks 應用程式中看到支付服務如何與領域物件 CRUD 互動的示例,其中信用卡支付處理由自定義控制器處理,而物件 CRUD 則由 Spring Data REST 處理。您的自定義控制器實際上可以與 Spring Data REST URL 結合使用,這樣無論 URL 是指向您的自定義控制器、Spring Data REST JPA Repository 還是任何其他受支援的 Repository 樣式,都可以在整個應用程式中保持一致且簡單的 URL 結構。

這不是排他性的

Spring Data REST 不是非此即彼。如果您不想將所有 Repository 公開給 Web 客戶端,沒問題!有幾種不同的方法可以關閉 Repository 的功能。您可以在原始碼中嵌入註解,或者,如果您無法訪問或根本無法新增 Spring Data REST 註解,則可以使用流暢的 DSL 風格配置來告訴 Spring Data REST 如何公開您的資源。在您的應用程式中使用 Spring Data REST 並不意味著只承諾一種方式做事。Spring Data REST 的結構使其能夠與您現有的應用程式良好配合,因此您可以整合 Spring Data REST 中您想要的功能,同時仍保留您習慣在 Spring MVC 控制器中建立的所有自定義編碼服務。

JSONP 支援正在遷移到過濾器

Spring Data REST 1.0 中內建的 JSONP 支援已從核心框架中移除,取而代之的是即將推出的通用 JSONP Servlet 過濾器,它將比 1.0 版本中 JSONP 的實現方式更好。當該過濾器普遍可用時,JSONP 支援不僅可以新增到 Spring Data REST,還可以新增到幾乎任何基於 Servlet 的 REST 資源。

安裝和文件

要開始使用 Spring Data REST,請檢視 參考文件 以瞭解概況,並透過簡單地將依賴項新增到 spring-data-rest-webmvc 工件(當前版本為 SpringSource 里程碑儲存庫 中的 1.1.0.M1)來開始在您自己的應用程式中使用它,然後匯入 Spring Data REST 配置,就像您在 spring-restbucks 應用程式中看到的那樣

在 CONFESS_2013 上了解更多資訊

如果您計劃參加四月第一週在維也納舉行的 CONFESS_2013,那麼您可以在我關於將 JPA 實體直接匯出到 Web 的演講中聽到所有關於 Spring Data REST 的資訊。

連結

Spring Data REST 主頁 | GitHub 上的原始碼 | 參考文件

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有