这与其说是一个问题,不如说是一个观察,因为我花了2-3个多小时才弄清楚应该根据我们的需要使用哪个注释.

据我所说,当我们制作一个合适的MVC应用程序时,我们会使用@Controller,它将为应用程序执行内部路由,并给出一个带有视图(HTML页面)的响应,而不是公开原始细节.@RestController用于制作RestFul应用程序,其目的只是获取从数据库获取的数据并执行查询.我们在使用@RestController时获得的数据是JSON格式的.

我想知道为什么spring会以这种特殊的方式运行,以及SpringBoot学习者在制作restful API时应该了解哪些内部工作.

推荐答案

@RestController本身带有两个弹簧注释:@Controller@ResponseBody.

这意味着@RestController@Controller之间的唯一区别在于返回值的处理.

对于@RestController,返回值用作响应主体.这正是编写REST服务时需要的.

如果是@Controller,你不会得到这个,所以你会得到默认的处理.这意味着字符串返回值被视为要渲染的视图,而不是要按原样返回的字符串.

Java相关问答推荐

如何使用CSS为选定但未聚焦的表格行设置背景 colored颜色 ?

如何转换Tue Feb 27 2024 16:35:30 GMT +0800 String至ZonedDateTime类型""

RxJava PublishSubject缓冲区元素超时

使用java访问具体子类特定方法的最佳方法是什么?

如何调用Firebase Realtime Database中的子图像列表到android studio中的回收器视图?

上下文初始化期间遇到异常-使用Java配置配置HibernateTemplate Bean时

Java记录的不同序列化/反序列化

将不受支持的时区UT重写为UTC是否节省?

Java 21虚拟线程执行器的性能比池化操作系统线程的执行器差?

Spring和可编辑";where";@Query

使用Jackson库反序列化json

如何在Spring Boot中创建可以将值传递给配置的&Enable&Quot;注释?

有谁能帮我修一下这个吗?使输出变得更加整洁

如何使用MapStrCut转换双向链接

处理4.3问题:javax.xml.ind包不存在(&Q;).您可能在学习GitHub教程时遗漏了库.&Q

多线程、并发和睡眠未按预期工作

spring 数据Elastic search 与 spring 启动数据Elastic search 之间的区别是什么?

Springboot应用程序无法识别任何@RestController或@Service,我认为@Repository也无法识别

如何调查进程列表中不可见的活跃 MySQL 事务?

元音变音字符:如何在 Java 中将Á<0x9c>转换为Ü?