二者都是定义控制器的注解,它们的区别如下:
(1)返回值不同。@RestController 注解相当于 @Controller 和 @ResponseBody 的结合。其中,@ResponseBody是一个针对方法返回值进行处理的注解,处理后的RestController注解会将所有处理请求的方法默认解析为将方法返回值直接作为响应体内容返回,主要用于构建RESTful API,返回的数据通常是JSON或XML格式。
而@Controller注解的返回值通常会经过视图解析器解析,返回数据通常是渲染后的HTML页面。
(2)用法不同。@RestController 注解可以创建RESTful风格的数据,主要有get、post、put、delete等,可以方便地处理输出和输入的JSON或XML数据,适用于前后端分离的架构。
@Controller则更多地与视图渲染和页面跳转相关,适用于传统的MVC架构,通过页面模板引擎将数据渲染成 HTML 页面返回给用户