@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框架或其他客户端消费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值