【问题标题】:Equivalent annotations to Jersey @Context, @FormParm and @BeanParam in SpringSpring 中 Jersey @Context、@FormParm 和 @BeanParam 的等效注解
【发布时间】:2017-06-03 09:24:00
【问题描述】:

考虑以下 Spring MVC 注释:

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

JAX-RS/Jersey 中的等价物是:

@GET
@Path("content")
@Produces(MediaType.APPLICATION_JSON)

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

  • @Context
  • @FormParm
  • @BeanParam

【问题讨论】:

    标签: web-services spring-mvc jersey jax-rs


    【解决方案1】:

    @FormParam

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

    Spring MVC 中没有与@FormParam直接等效项。你会发现最近的@RequestParam:

    @RequestParam("foo") String foo
    

    你也可以从请求中获取参数:

    String foo = request.getParameter("foo");
    

    @BeanParam

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

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

    @Context

    在 JAX-RS 中,@Context 用于将inject JAX-RS contextual information 转换为类字段、bean 属性或方法参数。所以你也不会在 Spring MVC 中找到与@Context直接等效项

    但是 Spring MVC 有一个 predefined set of types 可以自动注入方法参数。

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

    @Autowired
    HttpServletRequest request;
    

    【讨论】:

      最近更新 更多