Dropwizard:dropwizard-guicey 子资源定位器



我正在将我的应用程序从 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 在该级别下进行注入的每个请求绑定。

在您的示例中,根资源将由 guice 管理(由资源安装程序安装(,子资源将由 HK 创建(根据请求(。

要在子资源中使用 guice 服务,您需要启用 hk guice 桥:

  • 添加org.glassfish.hk2:guice-bridge:2.5.0-b32依赖项
  • 启用带有.option(GuiceyOptions.UseHkBridge, true)的网桥选项。

我将完整的演示添加到示例存储库中。它还显示了如何以纯粹的 guice 来实施您的案例。

最新更新