文章目录
- 控制器
- MVC控制器
- REST 控制器
- @controller
- @RestController
- 总结
控制器
MVC控制器
在了解这两种注解之前我们需要先知道控制器的概念,我们项目中常见的就是MVC控制器,MVC 是一种软件架构模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种分离有助于管理复杂的应用程序,并提高代码的可维护性和重用性。
- 模型(Model):负责处理应用程序的数据逻辑。通常包含业务逻辑、数据访问层等。
- 视图(View):负责显示用户界面。它是模型的可视化表示,可以是一个网页或其他形式的UI。
- 控制器(Controller):作为模型与视图之间的中介,处理用户的输入,执行相应的业务逻辑,并更新模型或视图。
在Spring MVC框架中,@Controller 注解用来标记一个类为控制器,它可以处理HTTP请求并返回响应。这些控制器通常用于生成HTML页面,适合于传统的Web应用,在现在的前后端分离项目中已经不太适用。
REST 控制器
REST 是一种设计风格,而不是具体的实现。RESTful Web服务使用标准的HTTP方法(GET, POST, PUT, DELETE等)来操作资源。每个资源通过唯一的URL标识,客户端可以通过这个URL对资源进行创建、读取、更新和删除(CRUD)操作。
- 资源(Resource):在REST中,任何可以被命名的信息都可以看作是一个资源,如用户、订单、评论等。
- 表现层(Representation):资源的表现形式,比如JSON、XML等格式。
- 状态转移(State Transfer):客户端和服务器之间通过交换资源的状态信息来进行交互。
在Spring框架中,@RestController 注解是用来标记一个类为RESTful风格的控制器。与 @Controller 不同的是,@RestController 自动添加了 @ResponseBody 注解,这意味着所有方法都将直接写入HTTP响应体中,而不需要经过视图解析器处理。因此,@RestController 通常用于构建API接口,返回的数据通常是JSON或XML格式,适合作为前后端分离架构中的后端服务。
@controller
传统的SpringMVC框架所带的注解,通过这个注解表明这个java类是一个控制器,可以对视图和数据进行操控,作为一个中间人才处理和展示数据,在现在的项目中已经不再适用,可以不用过于关注
@RestController
在上面的描述中已经知道了@RestController 自动添加了 @ResponseBody 注解,而这里的@ResponseBody即将所有的返回值自动装在了一个对象中,这些对象会被自动转换成JSON格式并写入到HTTP响应体中,所以通过@RestController控制器就只会返回对应的JSON数据,而不是像@controller一样需要同时返回数据和视图(也是是前端的代码);
总结
MVC控制器 主要用于传统的Web应用开发,其中涉及到视图渲染,最终目的是生成HTML页面供浏览器显示。
REST控制器 则主要用于提供API接口,支持前后端分离的架构,返回的数据通常是结构化的,如JSON或XML,由前端JavaScript框架或其他客户端消费。