2017-07-26 35 views
0

我將我的應用程序從Jersey2/HK2遷移到Dropwizard。我使用dropwizard-guicey將Guice集成到我的應用程序中,同時保留了我的一些HK2綁定/功能。Dropwizard:dropwizard-guicey子資源定位器

Dropwizard-guicey默認綁定單例作用域中的所有資源,這讓我想知道 - 在這種情況下,綁定子資源的建議方式是什麼?在新澤西州,我可以做

@Path("{pathParamId}/sub-resource") 
public Class<MySubResource> mySubResource() { 
    return MySubResource.class; 
} 

一樣簡單的東西,但是後來我子資源類看起來像這樣

public class MySubResource { 
    private String id; 

    public MySubResource(@PathParam("pathParamId") id) { 
     this.id = id; 
    } 
} 

它似乎並不認爲Dropwizard能夠拿起那吉斯結合的依賴在MySubResource中,因爲資源全部由Jersey管理。

我最終尋找的是Jersey默認提供的每個請求綁定,以及Guice在該級別下進行注入。

回答

1

在您的示例中,根資源將由guice進行管理(由resource installer安裝),並且子資源將由HK(每個請求)創建。

要在子資源使用吉斯服務,您需要啓用hk guice bridge

  • 添加org.glassfish.hk2:guice-bridge:2.5.0-b32依賴
  • 實現與.option(GuiceyOptions.UseHkBridge, true)橋選項。

我將complete demo添加到樣品回購。它還顯示了你的情況如何能夠用純粹的guice實現。