2016-06-21 50 views
2

我使用Guice作爲我的依賴注入框架。我想要添加一些可以使創建REST服務更簡單的東西。Guice with JAX-RS

我看了一下guice-servlet,它可以很好地將路徑引導到HTTP servlet,但是看起來這似乎是做的,我期待JAX-RS像註釋語法一樣工作,但它不會。

沒有實際使用過JAX-RS我已經搜索了一下,看起來Jersey是這個參考實現,但它看起來像它使用自己的依賴注入框架,並且不適用於Guice。另外,它具有5 + MB的依賴關係,這似乎很適合我以後的工作。

Guice是以這樣的方式設計的,它不適用於JAX-RS,如果是的話,我還應該做些什麼?

+0

你有沒有發現,說明如何整合這兩個DI框架的任何職位?你不能完全擺脫HK2(澤西島的內部DI框架),因爲澤西島將它用於其基礎設施的所有地方。但是有辦法將它與Guice整合。我已經回答了其中的一些帖子。我在進行這種整合時看到的唯一問題是人們在使用Google App Engine時。我不使用GAE,所以我永遠無法探索這個問題。 –

+1

@peeskillet - 我的問題並不在於每個人說的guice-jersey,更多的是如果我正在做正確的事情......這是我期望的非常容易的事情,我不希望帶來一個巨石依賴做它 - 它爲我提出了紅旗,因此問題。 – Cheetah

+1

我已經在幾個應用程序中完成了Guice + Jersey,我非常滿意!所以是的,我會說這是正確的。 – Jorn

回答

4

我認爲,也許guice-servlet模塊誤導了你。 Guice是一個DI框架。期。 guice-servlet模塊的真正目標是不提供servlet和過濾器的快捷方式聲明,但支持特殊範圍請求會話。那些不錯的shorcut聲明是syntally糖。

在Java中選擇JAX-RS實現有些問題。你有幾個選擇(澤西島,Resteasy,春季...)。如果你要完整的JavaEE,那麼你不必選擇。您只需使用註釋(和DI)即可使用。

如果您不使用JavaEE服務器(只是像Tomcat這樣的Web服務器或任何其他像Android應用程序那樣的奇特事物),那麼您必須選擇您的實現。如果你也使用DI(我建議),那麼還有一個決定。

所以你沒有使用JavaEE,你想用JAX-RS和依賴注入來實現一些REST API。你做一些研究,最終選擇澤西和吉斯。不錯的選擇,我也選擇了我最近的項目。是的,Jersey的依賴關係圖有點臃腫。我知道,這可能會更好。

現在你的問題是如何使它一起工作,因爲澤西島使用它自己的DI框架(HK2)這是一個壞事

您對SO有很多關於Jersey-Guice集成的參考資料。你最好的選擇是Guice HK2 bridge

什麼?你想在SO上直接參考?沒問題,這是一個好的。不要忘記提高答案。 ;-)

+0

澤西吉斯橋取決於吉斯3.0。我想知道是否有什麼與guice 4.0一起工作? – nagylzs