Json 避免使用@ResponseBody注释所有方法
我正在创建一个RESTAPI,在其中我将域对象作为JSON实体返回 到目前为止,我正在创建一个控制器,在该控制器中,我必须对每个方法进行如下注释:Json 避免使用@ResponseBody注释所有方法,json,spring,rest,spring-mvc,Json,Spring,Rest,Spring Mvc,我正在创建一个RESTAPI,在其中我将域对象作为JSON实体返回 到目前为止,我正在创建一个控制器,在该控制器中,我必须对每个方法进行如下注释: @RequestMapping(value="/entity/{id}", produces = "application/json; charset=utf-8", method=RequestMethod.GET) @ResponseBody public String getEntity(@PathVariable Long id) {
@RequestMapping(value="/entity/{id}", produces = "application/json; charset=utf-8", method=RequestMethod.GET)
@ResponseBody
public String getEntity(@PathVariable Long id)
{
(...)
}
由于我在这个控制器中的所有方法都是JSON实体,有没有办法提示spring我希望所有方法都返回@ResponseBody
对象?
此外,我还必须使用
products=“application/json;charset=utf-8”
进行注释,因为否则返回的对象具有错误的编码(并且它们不会作为json返回)。我是否也可以对所有方法执行此操作,而不必对它们中的每一个进行注释?您可以在类型(类)级别将@RequestMapping
与一起使用,以产生-对我来说,它可以毫无问题地工作:
@Controller
@RequestMapping(value = "/foo", produces = "text/plain; charset=UTF-8")
public class FooController { ... }
但是,从中可以看到,@ResponseBody
只能应用于Spring3.x中的方法级别
编辑:
正如@Prancer指出的,从v4.0开始,.从Spring版本4.0开始,@ResponseBody可以添加到继承的类型级别,因此不需要在方法级别添加@ResponseBody。@Prancer,感谢您指出这一点。我已经相应地更新了我的答案。@MichałRybak您还应该提到Spring 4功能只适用于@RestController
,而不适用于@Controller
@geo和source?从我读到的@RestController
是用@ResponseBody
自动注释的,因此无需再次注释它。此外,我在顶层找不到任何关于@ResponseBody
不适用于常规@Controller
-这应该有效,甚至@RestController
定义(如上所述)使用它。@MichałRybak我的意思是,当您@RestController
时,您不必使用@ResponseBody
注释任何内容,因为该功能是模拟的。仅用@Controller
注释Spring4POJO并不提供该功能。