过滤 Jersey 中的资源,类似于 Spring 的 @RequestMapping "Params" 属性

Filtering a resource in Jersey similar to @RequestMapping "Params" attribute of Spring

我正在将我所有的 Spring 服务转换为 Jersey,这时我遇到了一个关于如何转换 RequestParam 的 params 特性的问题 Spring到泽西岛?

@RequestMapping(value = "/earnings", params = "type=csv")

Spring:

@RequestMapping(value = "/earnings", params = "type=csv")
public void earningsCSV() {}

@RequestMapping(value = "/earnings", params = "type=excel")
public void earningsExcel() {}

@RequestMapping("/earnings")
public void earningsSimple() {}

泽西岛:

@Path("/earnings") 
public void earningsCSV() {}

@Path("/earnings")
public void earningsExcel() {}

@RequestMapping("/earnings")
public void earningsSimple() {}

如何在 Jersey 中指定类型 "csv/excel"? Jersey 是否支持基于参数的过滤请求?

如果没有,有什么办法可以实现吗? 我在考虑一个过滤器来处理它们并重定向请求,但我有将近 70 多个服务需要以这种方式解决。 所以我最终不得不为所有这些编写一个过滤器。此外,这听起来不像是一种干净的方法。

如有任何建议,我们将不胜感激。 提前致谢。

Jersey 中没有配置来定义它,这是在 spring 中完成的方式。

我通过创建一个父服务来解决这个问题,它接受调用并根据参数将调用重定向到相应的服务。

@Path("/earnings")
public void earningsParent(@QueryParam("type") final String type) {
    if("csv".equals(type)) 
         return earningsCSV();
    else if("excel".equals(type)) 
         return earningsExcel();
    else 
         return earningsSimple();
}

public void earningsCSV() {}

public void earningsExcel() {}

public void earningsSimple() {}

我觉得这种方法比 Filter 更好,因为它不需要开发人员在将来需要扩展时更改 Filter。