在 Spring Framework 中,@RestController 和 @Controller 都用于定义控制器类,但它们在功能和用法上有一些区别。
@Controller
@Controller 是一个用于定义 Spring MVC 控制器的注解。它用于标记一个类作为处理 Web 请求的控制器组件。通常,@Controller 用于传统的 MVC 模式,其中控制器负责处理请求,返回视图名称(如 JSP 页面),由视图解析器渲染成 HTML。
示例:
在这个例子中,greeting 方法处理 GET 请求并返回一个视图名称 greeting,视图解析器会根据这个名称找到对应的视图文件。
@RestController
@RestController 是一个复合注解,实际上它是 @Controller 和 @ResponseBody 的组合。它用于创建 RESTful Web 服务的控制器类,其中控制器方法的返回值直接作为 HTTP 响应体,而不是视图名称。这使得 @RestController 非常适合用于返回 JSON、XML 或其他格式的数据。
示例:
在这个例子中,greeting 方法返回一个 Greeting 对象,Spring 会自动将其序列化为 JSON(或其他指定的格式)并作为响应体返回。
总结
@Controller:用于传统的 Web 应用程序中,返回视图名称由视图解析器渲染成 HTML 页面。@RestController:用于创建 RESTful Web 服务,返回的对象会直接作为 HTTP 响应体,通常用于返回 JSON 或 XML 数据。
选择使用 @Controller 还是 @RestController 主要取决于的应用需求。如果需要生成 HTML 页面并渲染视图,使用 @Controller。如果需要处理 RESTful API 并返回数据,使用 @RestController。
Spring中@Controller与@RestController区别
1300

被折叠的 条评论
为什么被折叠?



