如何在Jersey中使用@Context注入参数化类型?

时间:2013-08-20 19:07:21

标签: java jersey jax-rs

我有一个以Coda Hale's AbstractInjectableProvider样式编写的InjectableProvider,它提供了一个Id:

@Override
public Id<User> getValue(HttpContext httpContext) {
  return new Id<User>(1234);
}

我的资源中的代码可以使用:

@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Path("accounts")
public AccountsSummary getAccounts(@Context Id userId) {
  return accountsSummaryFromUserId(userId);
}

当我添加类似参数时:

public AccountsSummary getAccounts(@Context Id<User> userId) {

我在启动时遇到错误:

SEVERE: Missing dependency for method public com.example.AccountsSummary com.example.ExperimentApi.getAccounts(com.example.Id) at parameter at index 0
SEVERE: Method, public com.example.AccountsSummary com.example.ExperimentApi.getAccounts(com.example.Id), annotated with GET of resource, class com.example.ExperimentApi, is not recognized as valid resource method.

在某些时候,我可以预料到我可能需要注入其他类型的ID或其他参数化类。如何让@Context知道泛型?我是否需要做一些与使getInjectable使用Parameter而不是Type?

相关的事情

0 个答案:

没有答案