使用Spring开发Java RESTful Web服务的7个理由

REST现在已成为开发Web服务的标准方法,涉及Java时,可以使用许多框架和库,例如JAX-RS,Restlet,Jersey,RESTEasy,Apache CFX等,但是我鼓励Java开发人员使用Spring框架来开发Java。开发RESTful Web服务。 但是,您可能会问, 为什么要使用Spring Framework在Java中开发RESTful Web服务? 有什么优势?为什么它比现有的其他框架和库更好? 好吧,我认为使用Spring开发RESTful Web服务的最重要原因是,您可以利用自己的Spring MVC经验来开发RESTful Web服务。

这是最大的优势之一,即利用您在Spring MVC上的多年经验将您的应用程序公开为REST API。 另一个原因是Spring对开发RESTful Web服务提供了出色的支持

从Spring 3.0版开始,在最后几个版本中,它对Spring MVC进行了许多增强,以提供一流的REST支持。 它提供了专用的注释,例如@RestController@ResponseStatus以使RESTful资源的开发在Spring 4.0中更加容易。

它还不仅帮助您创建RESTful Web服务,而且还提供了消耗REST资源的类,例如,您可以使用RestTemplate类消耗RESTful资源。

还有更多的实用程序类和批注,这些类和批注使Spring中的RESTful Web服务的开发更加轻松,无缝,我将在本文中分享其中的两个,以证明我的观点:使用Spring开发RESTful Web服务是正确的决定。

Spring如何支持RESTful Web服务?

正如我在第一段中告诉您的那样,我们可以使用Spring MVC创建和使用RESTful Web服务。 现在,让我们更详细地了解这些支持,以便您可以充分利用它们,并快速开发您一直想要的RESTful服务。

1.在Spring MVC中,控制器可以处理对所有HTTP方法的请求,这是RESTful Web服务的基础。 例如,您可以处理GET方法来执行读取操作,POST方法来创建资源,PUT方法来更新资源以及DELETE方法来从服务器中删除资源。 从Spring 3.2开始,您还可以处理PATCH请求。
2.对于REST,数据的表示非常重要,这就是为什么Spring MVC允许您使用@ResponseBody批注和各种HttpMessgeConverter实现完全绕过基于View的呈现。

通过使用这两者,您可以直接向客户端发送响应,例如,客户端所需的资源以及客户端所需的格式。 在接下来的文章中,我将在此博客中写有关@ResponseBody批注和HttpMessageConverter更多信息。

3. Spring 4.0发行版添加了专用的@RestController注释,以使RESTful Web服务的开发更加容易。

如果使用@RestController而不是@Controller注释控制器类,则Spring @RestController消息对话应用于控制器中的所有处理程序方法。

这意味着您不需要使用@ResponseBody注释对每个方法进行注释。 这也使您的代码更加简洁。 您可以在Spring的@Conroller和@RestController之间的差异中了解更多信息。

4. REST Web服务与普通Web应用程序之间的主要区别之一是,REST在URI本身中传递资源标识符数据,例如/ messages / 101,而Web应用程序通常使用查询参数,例如/ messages?Id = 101。

如果您还记得的话,我们使用@RequestParam来获取那些查询参数的值,但是不用担心,Spring MVC还提供了一个@PathVariable批注,可以从URL提取数据。 它允许控制器处理对参数化URL的请求。

您可以在Spring的@RequestParam@PathVaraible之间的区别中了解有关@PathVariable更多信息。

5. RESTful Web服务的另一个关键方面是表示形式,例如,同一资源可以以不同的格式表示,例如JSON,XML,HTML等。值得庆幸的是,Spring提供了几种视图实现和视图解析器,以将数据呈现为JSON,XML和HTML。

例如, ContentNegotiatingViewResolver可以查看请求的文件扩展名或Accept标头,以查找客户端资源的正确表示形式。

6.@ResponseBody批注类似, 批注用于将响应转换为客户端所需的格式(通过使用HttpMessageConverts ),Spring MVC还提供了@RequestBody批注,该批注使用HTtpMethodConverter实现将入站HTTP数据转换为传递给控制器​​的Java对象。处理程序方法。

7. Spring Framework还提供了一个Template类RestTemplate ,类似于JdbcTemplateJmsTemplate ,它们可以消耗REST资源。 您可以使用此类测试RESTful Web服务或开发REST客户端。

我已经在较早的博客文章中讨论过此类,并且您可以在本教程中看到有关使用RestTemplate从Java中的RESTful Web服务使用JSON的实时示例。

这些是Spring MVC框架的一些重要功能,可帮助开发RESTful Web服务。 正如我告诉我选择Spring来开发RESTful资源的最重要的原因是,我可以利用现有的框架知识,这意味着学习曲线并不困难。 如果从高层次看,开发RESTful服务与开发Web应用程序并没有太大区别。

根本的区别是,在前者的情况下,我们主要与人类用户打交道,而在REST的情况下,您必须与非人类用户打交道,主要是丰富JavaScript客户端和移动应用程序。 然后,此关键差异得出其他差异,例如,以JSON或XML而不是HTML表示数据,这适合人类用户,但不适用于非人类系统。
您可能喜欢的其他SpringREST资源

Java中的Restlet,Jersey和RESTEasy之间的区别?

Spring MVC中DispatcherServlet的用途是什么?

如何在Java Web应用程序中启用Spring安全性?

感谢您阅读本文,如果您喜欢这些使用Spring开发RESTful Web服务的原因,请与您的朋友和同事分享。 如果您有任何问题或反馈,请留下笔记。

翻译自: https://www.javacodegeeks.com/2018/01/7-reasons-use-spring-develop-restful-web-services-java.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java文件和xml文件_用Java分割大型XML文件

java文件和xml文件上周,我被要求用Java编写一些东西,该东西能够将一个30GB的XML文件拆分为可配置文件大小的较小部分。 文件的使用者将是一个中间件应用程序,该应用程序在XML的大尺寸方面存在问题。 在幕后,它使用某种DOM解析技术…

oracle java 并发_【转】JAVA并发教程(ORACLE官网资料)

本文是Oracle官方的Java并发相关的教程,感谢并发编程网的翻译和投递。计算机的使用者一直以为他们的计算机可以同时做很多事情。他们认为当其他的应用程序在下载文件,管理打印队列或者缓冲音频的时候他们可以继续在文字处理程序上工作。甚至对于单个应用…

部署Spring Boot Angular App(Maven和Tomcat)的4种方法

在上一篇有关Spring Boot angular 5的文章中 ,我们使用Spring Boot angular 5实现了一个完整的堆栈端到端Web应用程序。在本文中,我们将讨论在tomcat上部署Spring Boot和Angle App的不同方法。 我们将创建一个具有后端(服务器)和前…

计算机二级web题目(8.3)--简单应用题2

前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家。(点击跳转人工智能学习资料) 1.在考生文件夹下的Web3目录中,存有3.htm文件,该文件不完…

计算机二级web题目(8.4)--综合应用题2

前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家。(点击跳转人工智能学习资料) 1.在考生文件夹下的Web5目录中,存有5.htm文件,该文件不完…

(3.5)HarmonyOS鸿蒙上下左右方向滑动

需要获取按下时候的坐标和松开时候的坐标,并将两者进行比较。 ①MainAbilitySlice.java文件 可以根据使用情况做修改代码中判断处的限制偏差范围。 package com.example.yeman.slice;import com.example.yeman.ResourceTable; import ohos.aafwk.ability.Ability…

sql 注射_基本注射/资格赛,范围

sql 注射这是上周解决的DI / CDI基础知识的延续-在本文中,我将讨论基础注入,限定词和范围。 在上一个主题中,我们提供了有关DI / CDI概念的大量信息,我们还讨论了如何使用注释加载这些bean或类-这构成了对象的组成并创建了关于如…

计算机二级web题目(9.1)--综合选择题3

前些天发现了一个巨牛的人工智能学习电子书,通俗易懂,风趣幽默,无广告,忍不住分享一下给大家。(点击跳转人工智能学习资料) 1下列叙述中正确的是(D)。 A、栈是"先进先出"的线性表 B、队列是"…

java小程序 2048_微信小程序之游戏2048

主要用来锻炼逻辑思维能力image.png可以选模式image.png这里面主要解决的问题是:1.判断滑动方向//在滑动块级绑定滑动开始和滑动结束的方法很原始的方法,startFn时保存开始的(x,y),endFn时保存结束的(x1,y2),根据这四个参数 判断方向,算法在方…

Java面向对象(8)--继承性

多个类中存在相同属性和行为时,可以将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同的属性和行为,只要继承那个类即可。 这里的多个类称为子类(派生类),单独的这个类称为父类(基类或超类)。 语法格式:cla…

aimesh node重启_华硕 RT-AC86U 和 网件 R7000 组 AiMesh 成功

家里之前买了一个 R7000 主路由器,后来我嫌我房间里的信号有点烂( 5G 信号只能 2 格,网速比 2.4G 还慢),所以就入手了一个华硕 RT-AC86U 作为主路由器,R7000 则作为 AP。在买的时候就想组 AiMesh,但是因为种种事情耽搁…

maven ant_如何在Maven中运行Ant目标?

maven antmaven-antrun-plugin允许我们在各种maven构建阶段中运行ant目标。 我将专门为具有开发环境的开发人员解释maven-antrun-plugin的非常实际的用法。 通常,使用maven build,您会将项目捆绑到war文件或ear文件中。 您可以使用maven-antrun-plugin…

java中打开文件显示_在默认文件资源管理器中打开文件,并使用JavaFX或普通Java突出显示它...

我想做标题所说的.部分解决方案例如,在Windows中,您可以使用以下代码在默认资源管理器中打开文件并突出显示它.(虽然它需要修改包含空格的文件):/*** Opens the file with the System default file explorer.** param path the path*/public static void openFileLo…

win10下vscode配置c语言环境

1、C编译器下载 C编译器(MinGW-W64 GCC)的下载:点击官方下载 或者点击网盘下载提取码为karj 下载完成后解压,将解压后的文件夹放到合适的位置,点开其bin子文件夹,复制路径。 2、win10下环境变量配置 ①…

Java面向对象(11)--多态性

父类 变量名 new 子类();对象的多态性:父类的引用指向子类的对象 Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明 该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。简…

Java面向对象(12)--对象类型转换 (Casting )

基本数据类型的Casting: ①自动类型转换:小的数据类型可以自动转换成大的数据类型 如long g20; double d12.0f ②强制类型转换:可以把大的数据类型强制转换(casting)成小的数据类型 如 float f(float)12.0; int a(int)1200L Java对象的强制…

知识蒸馏 循环蒸馏_Java垃圾收集蒸馏

知识蒸馏 循环蒸馏串行,并行,并发,CMS,G1,Young Gen,New Gen,Old Gen,Perm Gen,Eden,Tenured,Survivor Spaces,Safepoints和数百个JVM…

Javascript中的AES加密和Java中的解密

AES代表高级加密系统,它是一种对称加密算法,很多时候我们需要在客户端加密一些纯文本(例如密码)并将其发送到服务器,然后由服务器解密以进行进一步处理.AES加密和解密更加容易在相同的平台(例如Android客户…

Java面向对象(14)--包装类的使用

针对八种基本数据类型定义相应的引用类型—包装类&#xff08;封装类&#xff09;&#xff0c;有了类的特点&#xff0c;就可以调用类中的方法。 基本数据类型 <——> 包装类&#xff0c;String——>包装类 ①装 int num 9; Integer int1 new Integer(num); Syste…

资源泄漏如何处理_处理缓慢的资源泄漏

资源泄漏如何处理使用Java监视器查找资源泄漏 查找缓慢的资源泄漏是使应用程序服务器长时间保持正常运行的关键。 在这里&#xff0c;我解释了如何使用Java监视器来发现缓慢的资源泄漏&#xff0c;以及如何验证它们是否是实际泄漏&#xff0c;而不仅仅是额外的预分配到某些HTTP…