我正在创建一个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返回)。我是否也可以为所有方法执行此操作,而不必为每个方法添加注释?
答案 0 :(得分:1)
您可以在类型(类)级别使用@RequestMapping
和produces
- 对我而言,它可以正常运行:
@Controller
@RequestMapping(value = "/foo", produces = "text/plain; charset=UTF-8")
public class FooController { ... }
但是,正如您在definition中看到的那样,@ResponseBody
只能应用于Spring 3.x中的方法级别。
编辑:
正如@Prancer指出的那样,从v4.0开始,Spring supports @ResponseBody
on type level。