本指南将引导您完成使用 spring 创建“hello, world”restful web 服务的过程。
你将建造什么 您将构建一个接受 http get 请求的服务
http://localhost:8080/greeting。
它将以 json 表示的问候进行响应,如以下清单所示:
{id:1,content:hello, world!}复制 您可以在查询字符串中使用可选name参数自定义问候语,如以下清单所示:
http://localhost:8080/greeting?name=user复制 name参数值覆盖默认值world并反映在响应中,如以下清单所示:
{id:1,content:hello, user!}复制 你需要什么 约15分钟 最喜欢的文本编辑器或 ide jdk 1.8或更高版本 gradle 4+或maven 3.2+ 您还可以将代码直接导入 ide: 弹簧工具套件 (sts) intellij idea 如何完成本指南 像大多数 spring入门指南一样,您可以从头开始并完成每个步骤,也可以绕过您已经熟悉的基本设置步骤。无论哪种方式,您最终都会得到工作代码。
要从头开始,请继续从 spring initializr 开始。
要跳过基础知识,请执行以下操作:
下载并解压缩本指南的源存储库,或使用git克隆它:git clone https://github.com/spring-guides/gs-rest-service.git 光盘进入gs-rest-service/initial 继续创建资源表示类。 完成后,您可以对照中的代码检查结果gs-rest-service/complete。
从 spring initializr 开始 您可以使用这个预先初始化的项目并单击 generate 下载 zip 文件。此项目配置为适合本教程中的示例。
手动初始化项目:
导航到https://start.spring.io。该服务提取应用程序所需的所有依赖项,并为您完成大部分设置。 选择 gradle 或 maven 以及您要使用的语言。本指南假定您选择了 java。 单击dependencies并选择spring web。 单击生成。 下载生成的 zip 文件,该文件是根据您的选择配置的 web 应用程序的存档。 如果您的 ide 具有 spring initializr 集成,您可以从您的 ide 完成此过程。
你也可以从 github 上 fork 项目并在你的 ide 或其他编辑器中打开它。
创建资源表示类 现在您已经设置了项目和构建系统,您可以创建您的系统 web 服务。
从考虑服务交互开始这个过程。
该服务将处理对 的get请求/greeting,可以选择name在查询字符串中使用参数。该get请求应200 ok在表示问候的正文中返回带有 json 的响应。它应该类似于以下输出:
{ id: 1, content: hello, world!}复制 该id字段是问候语的唯一标识符,是问候语content的文本表示。
要对问候表示建模,请创建一个资源表示类。为此,请提供一个普通的方法 java 对象,其中包含用于id和content数据的字段、构造函数和访问器,如以下清单(来自
src/main/java/com/example/restservice/greeting.java)所示:
package com.example.restservice;public class greeting { private final long id; private final string content; public greeting(long id, string content) { this.id = id; this.content = content; } public long getid() { return id; } public string getcontent() { return content; }} 此应用程序使用jackson json库将类型的实例自动编组greeting为 json。网络启动器默认包含 jackson。
创建资源控制器 在 spring 构建 restful web 服务的方法中,http 请求由控制器处理。这些组件由@restcontroller注释标识,greetingcontroller下面的清单 (from )通过返回类的新实例来
src/main/java/com/example/restservice/greetingcontroller.java处理get请求:/greetinggreeting
package com.example.restservice;import java.util.concurrent.atomic.atomiclong;import org.springframework.web.bind.annotation.getmapping;import org.springframework.web.bind.annotation.requestparam;import org.springframework.web.bind.annotation.restcontroller;@restcontrollerpublic class greetingcontroller { private static final string template = hello, %s!; private final atomiclong counter = new atomiclong(); @getmapping(/greeting) public greeting greeting(@requestparam(value = name, defaultvalue = world) string name) { return new greeting(counter.incrementandget(), string.format(template, name)); }}复制 这个控制器简洁明了,但引擎盖下有很多事情要做。我们一步一步分解。
@getmapping注释确保 http get 请求/greeting映射到greeting()方法。
有其他 http 动词的伴随注释(例如@postmappingpost)。还有一个@requestmapping它们都源自的注释,并且可以用作同义词(例如@requestmapping(method=get))。
@requestparam将查询字符串参数的值绑定name到方法的name参数中greeting()。如果name请求中没有参数,则使用defaultvalueof world。
方法体的实现创建并返回一个新greeting对象,该对象具有id和content基于下一个值的属性,并使用 greetingcounter格式化给定的格式。nametemplate
传统 mvc 控制器和前面显示的 restful web 服务控制器之间的一个关键区别是 http 响应主体的创建方式。这个 restful web 服务控制器不是依靠视图技术来执行服务器端将问候数据呈现为 html,而是填充并返回一个greeting对象。对象数据将作为 json 直接写入 http 响应。
此代码使用 spring@restcontroller注释,它将类标记为控制器,其中每个方法都返回域对象而不是视图。它是同时包含@controller和的简写@responsebody。
该greeting对象必须转换为 json。感谢 spring 的 http 消息转换器支持,您无需手动进行此转换。因为jackson 2在类路径上,所以会自动选择 spring
mappingjackson2httpmessageconverter将greeting实例转换为 json。
@springbootapplication是一个方便的注释,它添加了以下所有内容:
@configuration: 将类标记为应用程序上下文的 bean 定义源。 @enableautoconfiguration:告诉 spring boot 根据类路径设置、其他 bean 和各种属性设置开始添加 bean。例如,如果spring-webmvc位于类路径上,则此注释将应用程序标记为 web 应用程序并激活关键行为,例如设置dispatcherservlet. @componentscan: 告诉 spring 在包中查找其他组件、配置和服务com/example,让它找到控制器。 该main()方法使用 spring boot 的springapplication.run()方法来启动应用程序。您是否注意到没有一行 xml?也没有web.xml文件。这个 web 应用程序是 100% 纯 java,您不必处理任何管道或基础设施的配置。
构建一个可执行的 jar 您可以使用 gradle 或 maven 从命令行运行应用程序。您还可以构建一个包含所有必要依赖项、类和资源的单个可执行 jar 文件并运行它。构建可执行 jar 可以在整个开发生命周期、跨不同环境等中轻松地作为应用程序交付、版本化和部署服务。
如果您使用 gradle,则可以使用./gradlew bootrun. 或者,您可以使用构建 jar 文件./gradlew build,然后运行 jar 文件,如下所示:
java -jar build/libs/gs-rest-service-0.1.0.jar 如果您使用 maven,则可以使用./mvnw spring-boot:run. 或者,您可以使用构建 jar 文件,./mvnw clean package然后运行该 jar 文件,如下所示:
java -jar 目标/gs-rest-service-0.1.0.jar 此处描述的步骤创建了一个可运行的 jar。您还可以构建经典的 war 文件。
显示记录输出。该服务应在几秒钟内启动并运行。
测试服务 现在服务已经启动,访问
http://localhost:8080/greeting,您应该会看到:
{id:1,content:hello, world!}复制 通过访问提供name查询字符串参数
http://localhost:8080/greeting?name=user。content请注意属性的值如何从hello, world!变为hello, user!,如以下清单所示:
{id:2,content:hello, user!}复制 这一变化表明,@requestparam安排在greetingcontroller按预期工作。该name参数已被赋予默认值,world但可以通过查询字符串显式覆盖。
还要注意id属性是如何从1变为 的2。这证明您正在greetingcontroller跨多个请求处理同一个实例,并且其counter字段在每次调用时都按预期递增。
概括 恭喜!您刚刚使用 spring 开发了一个 restful web 服务。
指纹识别技术的基本原理是怎样的
讲设计,魅族PRO7蕴含的理念让你不得不服
TA7335集成块制作的调频发射电路
中国市场的血压测量技术面临的挑战以及解决方案详解
日月光拿下中兴自主5G基站芯片量产大单
构建RESTful Web服务的过程
宁王3亿成立矿业公司,锂矿布局已遍布四大洲
5G无线电网络:未来工厂的核心
爱立信:如何适应不断变化的实体化企业使用云和移动技术
2021年MiniLED电视零售量TCL第一,产品为王时代
90分智能解锁旅行箱评测 年轻人的第一款安全旅行箱
电流脉冲弛豫法(CPR)和电位弛豫法(PRT)
ChatGPT热潮继续 甲骨文将在其人力资源软件中添加生成式AI功能
虚拟驾车系统:激光投影还原车内情景
基于Fuzzy-PID的陀螺仪温度控制系统设计
为什么AI即服务势在必行一起来看看吧
苹果十周年,将发三款iPad Por无边框高端产品
四氯乙烯检测仪:专业的环境监测设备
AMD表示不会把自己的成功建立在对手失败的基础上
指令指针寄存器是什么_作用有哪些