我有一个 Java Web 应用程序,它使用 Jersey 来公开一个 REST API。
@Path("/myRootResource")
public class resource
{
@GET
@Path("subResource_1")
public Response subResource_1() {return null;}
@GET
@Path("subResource_2")
public Response subResource_2() {return null;}
}
我想为特定资源下的每个子资源运行一些代码。此代码处理身份验证任务、性能指标(例如,计算请求时间的开始时间)初始化和调试变量。
到目前为止,我的所有代码都在一个函数中(例如preTasks()
),我在每个子资源方法的开头运行它。我需要一些如何自动执行此操作并使该代码块为 的每个子资源运行myRootResource
,而不必将上述函数复制粘贴到每个子资源方法。
这是可以用 Jersey 的过滤器或拦截器完成的吗?
虽然我对 Spring 不是很熟悉,但我认为我想要实现的目标与此类似:Spring Web 应用程序:在控制器中输入 RequestMapping 之前执行公共代码
更新 12/06/2015
正如评论中所指出的,“拦截器”是一个不错的选择。但是只有 Jersey 2.X 及更高版本才支持“拦截器”。在我的代码中,我使用的是 Jersey 1.18。升级到 Jersey 2.X 会破坏我的部分代码,所以我现在正试图避免这种情况。
泽西岛 1.18 中是否有任何与“拦截器”等效的东西,或者我唯一的选择是升级。我认为“调度员”可能会胜任这项工作,这是正确的吗?