简述@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 返回给客户端。