我将我的应用程序从Jersey2 / HK2迁移到Dropwizard。我使用dropwizard-guicey将Guice集成到我的应用程序中,同时保留了一些我的HK2绑定/功能。
默认情况下,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无法了解Guice在MySubResource中绑定的依赖关系,因为资源全部由Jersey管理。
我最终要找的是Jersey默认为资源提供的每请求绑定,而Guice在该级别下进行注入。
答案 0 :(得分:1)
在您的示例中,root资源将由guice管理(由resource installer安装),子资源将由HK(每个请求)创建。
要在子资源中使用guice服务,您需要启用hk guice bridge:
org.glassfish.hk2:guice-bridge:2.5.0-b32
依赖.option(GuiceyOptions.UseHkBridge, true)
启用网桥选项。我将complete demo添加到样本仓库。它还显示了如何使用纯粹的guice来实现您的案例。