領先一步
VMware 提供訓練和認證,以加速您的進展。
了解更多資訊Spring Data 團隊很高興宣布在將網域物件以 RESTful 語意匯出至網路的演進中,邁出了重要的下一步:Spring Data REST 1.1.0.M1 現在已在 SpringSource 里程碑儲存庫中提供。
Spring Data REST 首頁 | GitHub 上的原始碼 | 參考文件
Spring Data REST 是一組 Spring MVC 組件,您可以將其新增至您自己的 Spring MVC 應用程式,以使用 RESTful、HATEOAS 語意將您的 Spring Data Repositories 匯出至網路。它透過將儲存庫匯出至可以透過幾種不同方式設定的 RESTful URL,提供一致的互動 API。
Spring Data REST 支援最上層實體(那些由 Spring Data Repository 直接管理的網域物件)的 CRUD 操作,只需編寫單行程式碼來定義一個擴展 Spring Data 的 CrudRepository
介面的介面即可。完成後,您的實體就具備完整的 RESTful 語意。您可以使用標準 URL 建立新的實體、更新現有的實體和刪除它們,這些 URL 遵循 HATEOAS 原則,是可被發現的。這表示存取您的 Spring Data REST 應用程式的使用者代理程式不需要預先了解您正在匯出哪些資源。它可以透過連續呼叫 JSON 中提供的 URL 來發現存在哪些實體以及這些實體上存在哪些關係。這些「連結」是 HATEOAS REST 應用程式的真正基礎和力量。
1.1 版本實際上是從頭開始重新編寫的。它不僅比 1.0 更容易設定,並且更符合 Spring MVC 對於過渡到 Spring 3.2 的期望,而且 Spring Data REST 內部最大的變更在於它現在支援 Spring Data 儲存庫實作的其他類型,而不僅僅是 JPA。無論使用哪種後端資料儲存區,CRUD 和管理關係(如果資料儲存區支援)的 HTTP 語意都保持不變。
這表示現在可以在同一個 Spring Data REST 應用程式中匯出 JPA 實體和 MongoDB 實體,並使用通用的 URL 結構和標準 Spring HATEOAS Resource 表示法來存取這些實體和集合。存取這些 RESTful URL 的使用者代理程式不需要任何關於後端實體由哪個資料儲存區管理的特殊知識,最重要的是,您不必編寫任何程式碼即可獲得該功能!
Spring Data REST 1.1 現在支援匯出 MongoDB CrudRepository
實作。相同的 HTTP 語意適用於 MongoDB @Document
實體,也適用於 JPA 實體。當然支援 GET、POST、PUT、DELETE,@DBRef
也是如此。您可以使用 GET、POST、PUT 和 DELETE 來檢視和管理兩個文件之間的關係,並且您可以根據您的 @Query
定義匯出 finder 方法。請參考 spring-data-mongodb 參考文件,以取得物件對應如何與 JPA 樣式對應不同以及查詢定義如何運作的完整詳細資訊。
Spring Data REST 1.1 現在支援匯出使用高效能 Gemfire 資料庫 到不同 Regions 的實體。閱讀 Spring Data Gemfire 文件,以取得大量設定選項以及 Gemfire 中的 POJO 對應如何與其他對應技術不同的完整說明。
Spring Data REST 1.1 現在已設定為透過下一個版本的 spring-data-neo4j,即 2.3 版來支援 Neo4J GraphRepository
。當它普遍可用時(應該在 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,並且是系統神學 REST 服務中描述的 Restbucks 應用程式的實作:REST in Practice,作者為 Jim Webber、Savas Parastatidis 和 Ian Robinson。
透過將 Spring Data REST 與您的其他 RESTful 服務混合使用,您可以實現 Spring Data REST 匯出的那些網域物件(您不必編寫任何程式碼即可將它們公開)與那些不代表實際實體但代表流程的服務之間的無縫整合。您可以在 spring-restbucks 應用程式中看到付款服務如何與網域物件 CRUD 互動的範例,其中信用卡付款處理由自訂控制器處理,而物件 CRUD 由 Spring Data REST 處理。您的自訂控制器實際上可以附加到 Spring Data REST URL,以便在整個應用程式中保持一致且簡單的 URL 結構,無論 URL 是指您的自訂控制器、Spring Data REST JPA Repository 還是任何其他支援的 Repository 樣式。
Spring Data REST 並非二擇一。如果您不希望將所有儲存庫都公開給 Web 用戶端,那也沒問題!您可以透過幾種不同的方式關閉儲存庫的功能。您可以將註解嵌入到您的原始碼中,或者,如果您無法存取或根本無法新增 Spring Data REST 註解,則可以使用流暢的 DSL 樣式設定來告訴 Spring Data REST 您的資源應該如何公開。在您的應用程式中使用 Spring Data REST 並不表示專門承諾只使用一種方法做事。Spring Data REST 的結構使其可以與您現有的應用程式良好地協同運作,因此您可以整合您想要的 Spring Data REST 的那些功能,同時仍然保留您習慣在 Spring MVC 控制器中建立的所有自訂編碼服務。
Spring Data REST 1.0 中內建的 JSONP 支援已從核心框架中移除,而是傾向於即將推出的通用 JSONP Serlvet Filter,它將比 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,那麼您可以透過 我在關於將實體匯出到網路的演講,全面了解 Spring Data REST。