假设我有一组 JAX-RS 定位器和子定位器,如下所示:
@Path("/users")
public class UserListResource {
@Path("/{id}")
public UserResource getCustomer(@PathParam("id") int id) {
// Find and return user object
}
}
public class UserResource {
@GET
public String get() {...}
}
例如,UserResource
具有 ID 的对象5
将具有路径"/users/5"
。在我的系统中,我有几个不同的资源。
现在的问题是:服务器如何找出给定资源的路径?我可以通过一些 JAX-RS API 以编程方式执行此操作,还是必须实现使用反射的代码?(我知道如何做后者,但更喜欢另一种方法。)
- 在我需要知道路径的时候,我根本没有请求对象。例如,我有一个计时器,它进行一些后台处理,然后更改域模型中的一些实体,然后通知所有客户端有关更改的实体(包括它们的路径)。
- 我知道在请求的范围内,我可以注入
UriInfo
提供此功能的对象,但我需要提前知道路径(以通知客户端不一定通过 JAX-RS 资源发生的更改)。 - 我不想在另一个地方重复路径信息,也不想为每种资源类型(在本例中为
"/users"
and"/{id}"
)设置一组路径片段常量。