Dropwizard:dropwizard-guicey子资源定位器

时间:2017-07-26 00:55:48

标签: jersey guice dropwizard

我将我的应用程序从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在该级别下进行注入。

1 个答案:

答案 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来实现您的案例。