【发布时间】:2016-11-10 16:11:09
【问题描述】:
我是使用 Jersey 2 创建 REST Web 服务的新手。我能够得到一些简单的案例,现在我正在继续“真正的”工作。
我创建了自己的 ResourceConfig 实例,并使用 Guice 返回的 REST 控制器实例填充 ResourceConfig 实例:
<!-- language: lang-java -->
final ResourceConfig rc = new ResourceConfig();
//register an *instance* of a REST controller
rc.register(injector.getInstance(MyRestController.class));
请注意,由于这些 REST 控制器实例是由 Guice 提供的,因此这些实例会填充所有必要的依赖项,这些依赖项都标有 @Inject 注释。
但是,当我运行上述代码来引导 Jersey 时,我看到如下错误:
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(....
显然,Jersey 也试图解决 REST 控制器实例上的 @Inject 依赖关系,因为它看到的 @Inject 注释与 Guice 相同。
我不希望 Jersey 进行任何依赖注入。我认为从 Jersey 到 Guice 有桥梁,但基于我无法在此处展示的程序要求,我需要自己创建 REST 控制器实例并向 Guice Injector 询问它们。
我的问题:如何在 Jersey 中禁用依赖注入?
我目前正在使用javax.inject.Inject 注释。也许我可以改用 com.google.inject.Inject 注释,认为泽西岛不会寻找这些注释。但是,我还是宁愿在泽西岛关闭依赖注入。我该怎么做?
谢谢!!
【问题讨论】:
标签: java jersey guice jersey-2.0 hk2