我有一个以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?
相关的事情