javax.ws.rs.container.ResourceInfo.getResourceClass() 的目的是什么?
What is the purpose of javax.ws.rs.container.ResourceInfo.getResourceClass()?
我正在编写自定义 Jersey 2.0 服务器日志记录过滤器。
对 ResourceInfo
的引用被注入为:
@Context
private ResourceInfo resourceInfo;
接口ResourceInfo
有两个方法:
Class<?> getResourceClass()
Method getResourceMethod()
有没有ResourceInfo.getResourceClass() != ResourceInfo.getResourceMethod().getDeclaringClass()
的情况?
奖金问题:两种方法都可以 return null
。有没有可能只有一个会是null
?
不能对空值说太多,但如果您有一些 class 层次结构,例如 superclass 资源,那么 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()
我正在编写自定义 Jersey 2.0 服务器日志记录过滤器。
对 ResourceInfo
的引用被注入为:
@Context
private ResourceInfo resourceInfo;
接口ResourceInfo
有两个方法:
Class<?> getResourceClass()
Method getResourceMethod()
有没有ResourceInfo.getResourceClass() != ResourceInfo.getResourceMethod().getDeclaringClass()
的情况?
奖金问题:两种方法都可以 return null
。有没有可能只有一个会是null
?
不能对空值说太多,但如果您有一些 class 层次结构,例如 superclass 资源,那么 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()