我有一个注释为@RestController的控制器,因此它会自动将@ResponseBody添加到所有带有@RequestMapping注释的方法中。但是,如果我使用@ExceptionHandler注释并返回一些响应:
@ExceptionHandler
public @ResponseBody Response someHandler(Exception ex) { ... }我可以从处理程序中删除@ResponseBody吗?如果我使用@ControllerAdvice,是否可以从它的处理程序中删除@ResponseBody注释?
发布于 2016-04-08 11:01:24
从Spring4.0开始,还可以在类型级别添加@ResponseBody注释,在这种情况下,它是继承的,不需要在方法级别添加。因此,如果在类型级别上使用@ResponseBody,则需要在@RequestMapping和ExceptionHandler上使用而不是。
我可以从处理程序中删除@ResponseBody吗?
@RestController是一个将@ResponseBody和@Controller结合在一起的原型注释。所以,您可以删除它,因为@RestContorller在类型级别上添加了一个@ResponseBody。
如果我使用@ControllerAdvice,是否可以从它的处理程序中删除@ResponseBody注释?
不,除非在类型级别上添加ResponseBody,否则这里不能这样做。
在这两种情况下,如果将ResponseEntity的一个实例作为返回值返回,则不需要ResponseBody。
https://stackoverflow.com/questions/36497566
复制相似问题