我正在编写一个自定义的Jersey 2.0服务器日志记录过滤器。
对ResourceInfo
的引用注释为:
@Context
private ResourceInfo resourceInfo;
接口ResourceInfo
有两种方法:
Class<?> getResourceClass()
Method getResourceMethod()
是否存在ResourceInfo.getResourceClass() != ResourceInfo.getResourceMethod().getDeclaringClass()
?
加分问题:两种方法都可能会返回null
。 仅可能是null
吗?
答案 0 :(得分:3)
对于null值不能说太多,但是如果你有一些像超类资源那样的类层次结构,那么有getResourceClass() != getResourceMethod().getDeclaringClass()
的情况。在代码中显示更容易,因此请考虑以下事项:
public class SuperResource {
@GET
@Produces({ MediaType.APPLICATION_JSON })
public Response getInfo() {
return Response.ok("{\"info\":1}").build();
}
}
@Path("test")
public class MyResource extends SuperResource{
// ... other endpoints
}
现在让我们来电话
GET http://localhost:9998/test/
getResourceClass() : class ru.varren.MyResource
getResourceMethod(): javax.ws.rs.core.Response ru.varren.SuperResource.getInfo()