我正在将我的应用程序从 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 来实施您的案例。