2

我正在创建一个 REST api,在其中我将我的域对象作为 JSON 实体返回。

到目前为止,我正在创建一个控制器,其中对于每个方法我都必须像这样注释它:

@RequestMapping(value="/entity/{id}", produces = "application/json; charset=utf-8", method=RequestMethod.GET)    
@ResponseBody
public String getEntity(@PathVariable Long id)
{
     (...)
}

由于我在这个控制器中的所有方法都是 JSON 实体,有什么方法可以提示 spring 我希望所有方法都返回@ResponseBody对象?另外我必须注释,produces = "application/json; charset=utf-8"因为否则返回的对象有错误的编码(并且它们不会作为 JSON 返回)。我是否也可以对所有方法执行此操作,而不必为每个方法添加注释?

4

1 回答 1

1

您可以在类型(类)级别上使用@RequestMappingwith produces- 对我来说它没有问题:

@Controller
@RequestMapping(value = "/foo", produces = "text/plain; charset=UTF-8")
public class FooController { ... }

但是,从定义中可以看出,@ResponseBody在 Spring 3.x 中只能应用于方法级别。

编辑:正如@Prancer 指出的那样,从 v4.0 开始,Spring 支持@ResponseBodytype level

于 2013-10-16T11:24:53.290 回答