一尘不染

在Spring MVC中,使用@ResponseBody时如何设置MIME类型标题

json

我有一个Spring MVC控制器,它返回一个JSON字符串,我想将mimetype设置为application / json。我怎样才能做到这一点?

@RequestMapping(method=RequestMethod.GET, value="foo/bar")
@ResponseBody
public String fooBar(){
    return myService.getJson();
}

业务对象已经可以作为JSON字符串使用,因此使用MappingJacksonJsonView不是我的解决方案。@ResponseBody是完美的,但如何设置模仿类型?


阅读 264

收藏
2020-07-27

共1个答案

一尘不染

我会考虑重构服务以返回您的域对象而不是JSON字符串,并让Spring处理序列化(通过MappingJacksonHttpMessageConverter编写时的)。从Spring
3.1开始,实现看起来很整洁:

@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE, 
    method = RequestMethod.GET
    value = "/foo/bar")
@ResponseBody
public Bar fooBar(){
    return myService.getBar();
}

注释:

首先,<mvc:annotation-driven />@EnableWebMvc必须添加到您的应用程序配置中。

接下来,注释的Produces属性@RequestMapping用于指定响应的内容类型。因此,应将其设置为MediaType.APPLICATION_JSON_VALUE(或"application/json")。

最后,必须添加Jackson,以便Java和JSON之间的任何序列化和反序列化都将由Spring自动处理(Spring检测到Jackson依赖关系,并且MappingJacksonHttpMessageConverter将在后台进行)。

2020-07-27