简述@RestController 和 @Controller 有什么区别?
参考答案:
@Controller
和 @RestController
都是 Spring MVC 框架中的注解,用于创建控制器类。它们之间的主要区别在于如何处理返回的数据。
@Controller
:这是 Spring MVC 提供的一个基础注解,用于定义一个控制器类。在类上使用@Controller
注解后,Spring 会将其实例化为一个 bean,并且将其视为一个控制器。在控制器方法中,你可以返回任何类型的数据,比如 ModelAndView、String、void 等。返回的数据将由 Spring MVC 自动解析并渲染到视图中。@RestController
:这是 Spring 4.0 版本新增的一个注解,是@Controller
和@ResponseBody
的组合。使用@RestController
注解的类中的所有方法都会默认添加@ResponseBody
注解,这意味着方法的返回值将直接作为 HTTP 响应的 body 返回给客户端,而不是被解析并渲染到视图中。因此,@RestController
通常用于创建 RESTful Web 服务,返回 JSON、XML 等数据格式。
总结来说,@Controller
和 @RestController
的主要区别在于如何处理返回的数据。@Controller
主要用于传统的 MVC 架构,返回的数据会被解析并渲染到视图中;而 @RestController
则主要用于 RESTful Web 服务,返回的数据会直接作为 HTTP 响应的 body 返回给客户端。