2
我試圖使用注入澤西注入@Context參數和Guice注入參數建設注入。混合Guice構造函數注入和Jersey @Context
此作品(純澤西注射):
@Path("top")
public class TopLevel
{
public TopLevel(@Context ResourceContext context)
{
..
}
}
此作品(純吉斯注射):
@Path("top")
public class TopLevel
{
@Inject
public TopLevel(MyService service)
{
..
}
}
但這不工作:
@Path("top")
public class TopLevel
{
@Inject
public TopLevel(MyService service, @Context ResourceContext context)
{
..
}
}
因爲Guice,所以
不知道如何注入ResourceContext。如果你看一下JerseyServletModule你會發現它注入了以下類:
WebApplication, Providers, FeaturesAndProperties, MessageBodyWorkers, ExceptionMapperContext, HttpContext, UriInfo, ExtendedUriInfo, HttpRequestContext, HttpHeaders, Request, SecurityContext and HttpResponseContext
但不ResourceContext。有任何想法嗎?
UPDATE:我不認爲我可以使用字段注入,因爲我需要ResourceContext來實例化另一個實例字段。例如:
public class Foo
{
public Foo(ResourceContext context) {}
}
public class Bar
{
private final MyService service;
private final ResourceContext context;
private final Foo foo;
@Inject
public Bar(MyService service, @Context ResourceContext context)
{
this.foo = new Foo(context);
}
}
如果我是構造後實例ResourceContext,我不能實例Foo
。
我不認爲我可以注入一個實例字段(我已經更新了問題來解釋爲什麼)。我已經提交了http://java.net/jira/browse/JERSEY-1219 – Gili
謝謝。固定在1.13-SNAPSHOT。 –