与 Spring 中的 Jersey @Context、@FormParm 和 @BeanParam 等效注解

Raj*_*tia 1 web-services jax-rs spring-mvc jersey

考虑以下 Spring MVC 注释:

@RequestMapping(value="content", 
                method=RequestMethod.GET, 
                produces = "application/json; charset=UTF-8")
Run Code Online (Sandbox Code Playgroud)

JAX-RS/Jersey 中的等效项是:

@GET
@Path("content")
@Produces(MediaType.APPLICATION_JSON)
Run Code Online (Sandbox Code Playgroud)

我正在寻找以下 JAX-RS/Jersey 注释的等效 Spring MVC 注释:

  • @Context
  • @FormParm
  • @BeanParam

cas*_*lin 5

@FormParam

在 JAX-RS 中,@FormParam将请求实体正文中包含的表单参数的值绑定到资源方法参数。

Spring MVC 中没有直接等效的东西@FormParam。您会发现最接近@RequestParam是:

@RequestParam("foo") String foo
Run Code Online (Sandbox Code Playgroud)

您还可以从请求中获取参数:

String foo = request.getParameter("foo");
Run Code Online (Sandbox Code Playgroud)

@BeanParam

在 JAX-RS 中,@BeanParam可用于将自定义 JAX-RS参数聚合器值对象注入到资源类字段、属性或资源方法参数中。

我不知道有任何注释可以为您提供类似的功能,但根据此答案,您可以创建一个具有与请求参数匹配的字段名称的类,并将其添加为请求处理程序方法中的方法参数。

@Context

在 JAX-RS 中,@Context用于将JAX-RS 上下文信息注入到类字段、bean 属性或方法参数中。所以你也找不到Spring MVC 的直接等价物。@Context

然而 Spring MVC 有一组预定义的类型,可以自动注入方法参数中。

您还可以@Autowired在类字段中注入一些请求/响应上下文信息:

@Autowired
HttpServletRequest request;
Run Code Online (Sandbox Code Playgroud)