避免使用@ResponseBody注释所有方法

时间:2013-10-16 11:04:33

标签: json spring rest spring-mvc

我正在创建一个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返回)。我是否也可以为所有方法执行此操作,而不必为每个方法添加注释?

1 个答案:

答案 0 :(得分:1)

您可以在类型(类)级别使用@RequestMappingproduces - 对我而言,它可以正常运行:

@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