Spring @RequestMapping“produce”标签用于什么目的

时间:2015-12-24 08:59:01

标签: spring spring-mvc

我使用@RequestMapping的“生成”标签做了一个POC,我不明白为什么会使用这个标签? 文件说:

  

您可以通过指定可生成列表来缩小主映射   媒体类型。 仅在Accept请求时才会匹配请求   标题匹配其中一个值。此外,使用产品   condition确保用于生成的实际内容类型   response取决于生成条件中指定的媒体类型。

当我在我的应用程序中使用它时,当我在没有设置Accept请求标头的情况下调用服务时,我也可以访问该服务,Narrowing意味着什么?

@RequestMapping(value="/public/login",
                method=RequestMethod.POST,
                produces="application/json")
public @ResponseBody LoginResponse loginUser(@RequestBody LoginEvent loginEvent) {
        return null;

}

我没有理解其使用的原因。

2 个答案:

答案 0 :(得分:1)

不发送Accept标题相当于接受所有内容。如果您只有一个方法映射到/public/login,则无需缩小任何内容,因此该方法将始终匹配。

但是Spring不知道响应应该是什么格式,它会选择下一个最好的格式,可以这么说。 produces="application/json"确保选择JSON作为输出格式。

答案 1 :(得分:0)

produces="application/json" 

表示您的方法将生成json作为结果,它将作为响应发送。