Spring Boot 2.2.2.RELEASE须要Java 8或更高的版本,Spring Framework须要 5.2.2.RELEASE或更高版本;Maven须要3.2或以上的版本。在开始项目之前,请先检讨本地的环境是否知足以上哀求。
1. 检讨JDK版本 打开本地终端,在终端界面输入java -version检出JDK的版本信息,你可以通过下面的gif短片理解命令的利用:
2. 检讨Maven版本
在终端中输入mvn -v命令检出Maven的版本信息,你可以通过下面的gif短片理解命令的利用:

接下来,让我们先理解一些本示例的项目将要达到的功能。
3. 项目预期的功能我们将构建一个基于Http GET要求的web service运用程序,当在浏览器中访问如下地址时:
http://localhost:8080/users
将以JSON的格式返回所有的用户信息,例如:
{ "id": 1, "username": "King", "content": "My name is King"}
其余,还可以在要求地址中添加一个可选的查询字符串参数name,例如:
http://localhost:8080/users?name=Ramostear
当访问上述地址时,运用将创建一个名称为Ramostear的JSON工具,例如:
{ "id": 5, "username": "Ramostear", "content": "My name is Ramostear"}
接下来,我们将开始创建并编写干系的代码。
4. 工具的依赖库构建本示例的项目,我们须要以下的工具和依赖库:
Spring Boot.2.2.2.RELEASEJDK 1.8 +Spring Framework 5.2.2.RELEASEMaven 3.2 +Lombok pluginIntelliJ IDEAPostman4.1 Lombok插件 Lombok是一个基于Java开拓插件,它使得Java开拓者可以通过其定义的一些表明来肃清项目中冗长和繁琐的模板代码,可以提高代码的编写效率。例如,利用Lombok的表明,你不必在书写Getter,Setter,Constructor,toString等方法,如果你须要利用Lombok插件,首先得再IDEA中安装Lombok插件,下面的gif短片演示了如何在IDEA中安装Lombok:
4.2 Postman
Postman是一个功能强大的API调试,Http要求,自动化测试工具,在本次案例中,我们将利用Postman测试Restful Web Service运用程序。你可以访问下面的地址理解并下载Postman:
https://www.getpostman.com/
有很多种方法可以创建Spring Boot运用程序。在本次示例(以及后续的系列文章)中,默认利用IDEA创建Spring Boot项目。如果你对IDEA创建Spring Boot项目不太熟习,可以查看第三章 利用IntelliJ IDEA创建Spring Boot项目 理解更多详细细节。
与往常一样,我们须要为项目指定一些必要的信息:
Group:com.ramostearArtifact:restful-web-serviceType:项目的构建办法,默认为Maven 工程Language:项目的编辑措辞,默认为JavaPackaging:项目终极的打包办法,默认为JarJava Version:Java的版本,默认为1.8Version:项目的版本号,默认为0.0.1-SNAPSHOT(快照版)Name:项目的名称,例如restful-web-serviceDescription:项目的描述信息,Restful web service application base on Spring Boot 2.2.2Package:项目的root包名,例如com.ramostear.restful除此之外,我们还须要向工程中添加Spring Web 和Lombok两个依赖库。
6. 工程构造以下是本次示例的项目工程构造:
7. pom.xml
下面是pom.xml文件的完全内容:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.ramostear</groupId> <artifactId>restful-web-service</artifactId> <version>0.0.1-SNAPSHOT</version> <name>restful-web-service</name> <description>Restful web service application base on Spring Boot 2.2.2</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
现在,全体项目已经构建完成,接下来我们将编写干系的业务代码。
8. 创建User POJO类 在本示例中,我们将利用User工具来封装内部的一些细节,包括用户ID,用户名和内容信息。为了减少编码韶光,提高开拓效率,在User类中,我们利用Lombok表明替代传统的Getter/Setter,布局器以及toString方法的书写。下面是User类的完全内容:
package com.ramostear.restful;import lombok.;/ @ClassName User @Description TODO @Author ramostear @Date 2020/1/8 0008 6:00 @Version 1.0 /@Data@ToString@NoArgsConstructor@AllArgsConstructorpublic class User { private Long id; private String username; private String content;}
注:@Data表明等同于@Getter和@Setter的组合,在项目进入编译期时,Lombok会自动为User类天生相应的Getter/Setter,toString,无参布局函数和全部参数的布局函数。这里不对Lombok表明做过多的先容。
接下来,我们将创建一个资源掌握器来处理外部要求。
9. 创建资源掌握器 在示例中,定义了一个UserController类来处理外部的要求,并利用@RestController表明标注改类为一个资源掌握处理类。下面时UserController的完全代码:
package com.ramostear.restful;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;import java.util.Map;import java.util.concurrent.atomic.AtomicLong;/ @ClassName UserController @Description TODO @Author ramostear @Date 2020/1/8 0008 6:03 @Version 1.0 /@RestControllerpublic class UserController { public static Map<String,User> userData = new HashMap<>(); private static final String CONTENT_TEMPLATE = "My name is %s"; private static final AtomicLong ID_COUNTER = new AtomicLong(); @GetMapping("/users") public User users(@RequestParam(value = "name",defaultValue = "King")String name){ userData.putIfAbsent(name,new User(ID_COUNTER.incrementAndGet(),name,String.format(CONTENT_TEMPLATE,name))); return userData.get(name); }}
下面对该类做一些大略先容:
userData充当一个临时的存储器,用于存放用户数据;@GetMapping表明用于将/users要求映射到users()方法中;@GetMapping表明是@RequestMapping(method=GET)的快捷写法;@RequestParam表明用于将查询字符串参数名称的值于users()方法中的参数进行绑定,如果要求中不存在name查询参数,则利用默认的”King“作为其值;如果名称在userData中存在,则直接返回数据,如果名称在userData中不存在,则先创建,然后返回数据;Restful Web Service的掌握器与传统的Spring MVC掌握器的差异在于两者所创建的Http相应主体的办法。Restful Web Service的掌握器无需返回一个视图名称,而是将数据作为相应主体返回给要求端。此外,@RestController是一个组合表明(快捷表明),@Controller和@ResponseBody表明的组合利用也能达到@RestController的效果。
10. 运行运用程序并测试接下来,我们将利用下面的命令启动运用程序:
mvn spring-boot:run
你也可以直接运行RestfulWebServiceApplication类中的main()方法类启动运用程序。当项目启动成功狗,你可以在浏览器中输入http://localhost:8080/users 和http://localhost:8080/users?name=Ramostear 或其他name参数进行测试,本例中,我们将利用Postman对运用程序进行测试,下面是测试的一段gif动画:
在本篇文章中,先容了如何利用Spring Boot 创建一个Restful web service运用,不才一各章节中,将着重先容Spring Boot中的核心表明。
阅读更多