使用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面向对象(7)--package和import关键字

package关键字 ①为了更好的实现项目中类的管理,提供包的概念 ②使用package声明类或接口所属的包,声明在源文件的首行 ③包,属于标识符,遵循标识符的命名规则、规范( xxxyyyzzz) ④每"."一次,就代表一层文…

java圆形排列_位图排序java版

1、《编程珠玑》第一章第一题就相当的精彩,做个笔记。题目如下:输入: 一个包含n个正整数的文件,每个正整数小于n,n等于10的7次方(一千万)。并且文件内的正整数没有重复和关联数据。输出: 输入整数的升序排列约束: 限制在1M左右…

(3.1)HarmonyOS鸿蒙单击事件4种写法

第二种和第四种常用 实现步骤: 1.通过id找到组件。 2.给需要的组件设置单击事件。 3.实现ClickedListener接口。 4.重写onClicked方法。 第一种,自定义实现类(在当前类外面写实现类) ①MainAbilitySlice.java文件 package com.example.yem…

JSON指针:JSON-P 1.1概述系列

Java EE 8包括对JSON处理API的更新,并使其与JSON的最新IEFT标准保持同步。 他们是: JSON指针 (RFC 6901) JSON修补程序(RFC 6902) JSON合并补丁(RFC 7396) 我将在这个迷你系列中…

Java获取oracle字段注释_java读取ORACLE数据库表字段信息以及注释信息

最近在做编程工具,便于快速开发程序,用过太多框架,但是发觉只有自己制作代码工具才开发起来痛快。这个类是用来读取oracle数据库表结构的,也包括列的注释,对于生成代码有很好的帮助。1.[文件] OracleTable.java ~ 3KB …

(3.2)HarmonyOS鸿蒙双击事件

跟单击事件类似,双击事件也有4种写法,这里采用当前类作为实现类这种写法,其他写法可以参见《单击事件的4种写法》。不同的是双击事件需要的是Component.DoubleClickedListener。 实现步骤: 1.通过id找到组件。 2.给需要的组件设置双击事件。…

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

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

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

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

(3.3)HarmonyOS鸿蒙长按事件

跟单击事件类似,长按事件也有4种写法,这里采用当前类作为实现类这种写法,其他写法可以参见《单击事件的4种写法》。 实现步骤: 1.通过id找到组件。 2.给需要的组件设置长按事件。 3.本类实现LongClickedListener接口。 4.重写onLongClicked方…

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

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

java中true转换为int_在Java中将字节转换为int的最优雅的方式

示例代码:int a 255;byte b (byte) a;int c b & 0xff; // Here be dragonsSystem.out.println(a);System.out.println(b);System.out.println(c);所以我们从一个整数值255开始,将它转换成一个字节(变为-1),然后使用魔术公式将其转换成…

(3.4)HarmonyOS鸿蒙滑动事件三个动作

接口名:TouchEventListener 滑动事件里面分为三个动作:按下,移动,抬起 PRIMARY_POINT_DOWN:按下 POINT_MOVE:移动 PRIMARY_POINT_UP:抬起 手机坐标: 手机左上角的点为原点。向右为…

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

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

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

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

创建存储,修改存储_安全地创建和存储密码

创建存储,修改存储几乎每次涉及用户配置文件时,都必须管理用户凭据,从而能够创建和存储用户密码。 通常应该使用哈希密码和盐分密码来准备数据库公开和通过使用Rainbow表进行哈希逆转。 但是,找到以明文形式存储的密码并不少见(很…

mysql把一行保存到另一个表_MYSQL:如何复制整个行从一个表到另一个在MySQL与第二个表有一个额外的列?...

为了完善Zed的答案,并回答你的评论:INSERT INTO dues_storage SELECT d.*, CURRENT_DATE() FROM dues d WHERE id 5;见TJ Crowder的评论最安全的方法是完全指定插入和提取的列。 (对于应用程序)没有任何保证,这些将是您认为可能的顺序。inse…

Spring Security中的SecurityContext和SecurityContextHolder是什么?

SecurityContext和SecurityContextHolder是Spring Security的两个基本类。 SecurityContext用于存储当前经过身份验证的用户的详细信息,也称为原理。 因此,如果必须获取用户名或任何其他用户详细信息,则需要首先获取此SecurityContext 。 Sec…

codemirror java代码_codemirror使用(示例代码)

JS使用使用bower下载javascript bower i codemirror引入样式文件html 引入js文件html 文档结构html 初始化javascript // mode: "text/javascript", // mode: "text/css" window.onload function(){ var myCodeMirror CodeMirror.fromTextArea(document.…

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

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

java selenium用js点击_Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?...

小编典典你可以通过以下任一过程解决它们:1.由于存在JavaScript或AJAX调用而无法单击元素尝试使用ActionsClass:WebElement element driver.findElement(By.id("navigationPageButton"));Actions actions new Actions(driver);actions.moveT…