Spring boot教程-使用Spring Boot初始化RESTful Web服务项目
使用Spring Boot初始化RESTful Web服务项目
步骤1: 从 https://spring.io/tools3/sts/all
下载 Spring Tool Suite (STS) 并解压。
步骤2: 启动 STS。
步骤3: 点击 文件 菜单 -> 新建 -> Spring Starter 项目 ->
如果 Spring Starter 项目 未列出,那么在菜单底部点击 Other。屏幕上会出现一个对话框。在 Wizards 文本框中键入 Spring Starter 项目,然后点击 Next 按钮。
步骤4: 提供项目的名称、组和包。我们提供了:
名称:restful-web-services
组:cn.javatiku
包:cn.javatiku.server.main
点击 Next 按钮。
步骤5: 选择 Spring Boot 版本 2.1.8。
步骤6: 在项目资源管理器窗口中可以看到项目结构。
步骤7: 前往 Maven 仓库 https://mvnrepository.com/
并在 pom.xml 文件中添加 Spring Web MVC,Spring Boot DevTools,JPA 和 H2 依赖项。添加依赖项后,pom.xml 文件如下所示:
pom.xml
<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
http://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.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.javatiku</groupId>
<artifactId>restful-web-services</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>restful-web-services</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api -->
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-archiver</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
步骤8: 现在打开 RestfulWebServicesApplication.java 文件并将其运行为 Java 应用程序。
package cn.javatiku.server.main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RestfulWebServicesApplication
{
public static void main(String[] args)
{
SpringApplication.run(RestfulWebServicesApplication.class, args);
}
}
这只是确保应用程序正常运行,并没有实际的服务操作。
输出
创建一个 Hello World 服务
步骤1: 在包 cn.javatiku.server.main 中创建一个名为 HelloWorldController 的新类。
步骤2: 在创建 Web 服务时,我们需要定义两个事务:Get 方法和 URI。现在创建一个返回字符串 "Hello World" 的 helloWorld() 方法。如果我们想要告诉 Spring MVC 它将处理 REST 请求,我们必须添加 @RestController 注解。现在它变成了一个可以处理 REST 请求的 REST 控制器。
接下来要做的是为该方法创建一个映射。在 helloWorld() 方法上面添加 @RequestMapping 注解。HelloWorldController 代码如下:
package cn.javatiku.server.main;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
//Controller
@RestController
public class HelloWorldController
{
//using get method and hello-world as URI
@RequestMapping(method=RequestMethod.GET, path="/hello-world")
public String helloWorld()
{
return "Hello World";
}
}
我们还可以使用 @GetMapping 注解来改进上面的代码,而不需要指定方法。这样可以使代码更加简洁:
package cn.javatiku.server.main;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
//Controller
@RestController
public class HelloWorldController
{
//using get method and hello-world as URI
@GetMapping(path="/hello-world")
public String helloWorld()
{
return "Hello World";
}
}
步骤3: 运行 RestfulWebServicesApplication。浏览器上将显示字符串 Hello World。
改进 Hello World 服务以返回一个 Bean
在这一部分,我们将为 helloWorld() 方法生成一个 Bean。
步骤1: 在 HelloWordController.java 文件中创建一个 helloWorldBean() 方法。将 URI 映射到 "/hello-world-bean",并返回 HelloWorldBean。
HelloWorldController.java
package cn.javatiku.server.main;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
//Controller
@RestController
public class HelloWorldController
{
//using get method and hello-world URI
@GetMapping(path="/hello-world")
public String helloWorld()
{
return "Hello World";
}
@GetMapping(path="/hello-world-bean")
public HelloWorldBean helloWorldBean()
{
return new HelloWorldBean("Hello World"); //constructor of HelloWorldBean
}
}
步骤2: 创建一个名为 HelloWorldBean 的类。
步骤3: 生成 Getters 和 Setters。
右键单击 -> Source -> Generate Getters and Setters -> 勾选框 -> Ok
步骤4: 生成 toString()。
右键单击 -> Source -> Generate toString().. -> Ok
HelloWorldBean.java
package cn.javatiku.server.main;
public class HelloWorldBean
{
public String message;
//constructor of HelloWorldBean
public HelloWorldBean(String message)
{
this.message=message;
}
//generating getters and setters
public String getMessage()
{
return message;
}
public void setMessage(String message)
{
this.message = message;
}
@Override
//generate toString
public String toString()
{
return String.format ("HelloWorldBean [message=%s]", message);
}
}
步骤5: 启动 HelloWorldController。浏览器的 URL 变为 localhost:8080/hello-world-bean。
它以 JSON 格式返回消息 "Hello World"。
{
message: "Hello World"
}