2014-11-09 55 views
10

我想構建一個寧靜的服務/ API。我使用了一些框架來構建它,但我想嘗試其他更有效的方法。我聽說澤西島是建立其他API的通用庫,Spring也是一個很好的框架。但我也看到了一些像Spring + Jersey這樣的解決方案。因此,我對這些其他API解決方案有點困惑。Spring Rest服務和Jersey Rest Service以及Spring + Jersey解決方案有什麼區別?

誰能告訴我這些有什麼區別? Jersey REST,Spring Rest和Spring + Jersey Rest?

我的目標是建立幾個rest json作爲輸入/輸出的API。我有jar文件作爲後端處理邏輯來處理輸入json/object並返回json/object。

非常感謝。

回答

14

Jersey是Sun提供的JAX-RS API示例實現,而Spring REST當然是Spring對相同API/JSR的實現。主要區別在於Spring REST很容易集成到其他Spring API(如果您願意的話),例如Spring Data Rest

它們之間存在着一些值得關注的差異 - 你可以「嵌入」澤西資源(春季稱爲控制器)內的對方,使一個單獨的類,它是負責的副路徑某些路徑,雖然現在在Spring中似乎不可用(您必須定義完整路徑)。另外,在我看來,Jersey給出了更好的「開箱即用」的錯誤響應(比如爲什麼它不能使用Jackson將JSON有效載荷映射到Java bean),而Spring更具可配置性,但沒有一些額外的工作。

最後,他們之間的選擇差異通常歸結爲 - 您是否已經或者是否打算將任何其他Spring庫集成到您的應用程序中?如果是這樣的話,Spring REST是一種可行的方式,因爲您可以更容易地集成它,否則它實際上只是您個人喜歡使用的個人偏好。我個人喜歡澤西島,但其他相關的春季項目(例如我強烈推薦的Spring HATEOAS)的力量使得Spring成爲更好的選擇。我認爲你的情況不會有真正的決定因素。由於您的「黃金」目標是一個帶有JSON輸入/輸出的簡單API,因此我建議您遵循Spring REST guide

+0

另外Spring + Jersey REST通常指的是將Jersey用於Spring的RESTful端點以用於其他應用程序 - 當您希望使用Jersey註釋/實現但其他Spring框架(例如依賴注入)時。 – 2014-11-10 17:04:13

+0

謝謝,我已經設置了REST api。 – Terry 2014-12-16 22:22:57

2

一個主要的區別在於單元測試支持。

Jersey Test Framework不適用於模擬服務器端代碼 - 例如,如果您的REST資源依賴於某個服務,您希望在測試資源方法時模擬該服務。然而,澤西測試運行一個單獨的容器,並且單元測試了對REST資源正在運行的實例的調用 - 此時,我還沒有發現任何文檔或方式來模擬服務器端代碼。

相反,Spring MVC tests不需要任何容器 - 並且更好地與其控制器集成。依賴注入可以用來注入模擬服務/ DAO以獲得更好的單元測試。

我還發現,與Jersey相比,Spring項目的文檔更成熟。