SpringBoot - 入门教程 (创建、运行项目,REST服务样例)
由于微服务、分布式架构思想的流行,SpringBoot 和 SpringCloud 也已成为当前最流行的微服务框架。本文通过样例的方式演示如何搭建、运行一个简单 SpringBoot 项目。在搭建之前需要保证,我们的电脑上已经安装了如下环境:
-
JDK8+
-
Maven3.0+
-
InteIIij IDEA 、 eclipse、STS
一、创建项目
SpringBoot 工程可研通过很多种方式创建,最通用的方式有三种,分别为通过 Maven、在线创建和通过 idea 开发工具创建。
1、使用 Maven 创建项目
(1)、在 cmd 窗口中执行如下命令:
mvn archetype:generate -DgroupId=org.yby.www -DartifactId=springdemo1 -DarchetypeAritifactId=maven-archetype-quickstart -DinteractiveMode=false
命令解释:
-
-DgroupId 组织Id (项目包名)
-
-DartifactId 项目名称或者模块名称
-
-DarchetypeAritifactId 项目骨架
-
-DinteractiveMode 是否使用交互模式
执行完上面命令以后可以在 当前目录下看到创建好的项目,如下所示:
使用 mvn 创建好的项目使用 IntelliJ IDEA 或者Eclipse打开即可。下面我们使用 IntelliJ IDEA 打开项目。
步骤如下:
步骤1、打开 IntelliJ IDEA 选择 File -> Open, 在弹出的如下图的窗口,选择新创建的项目,点击 OK 接口。
步骤2、添加依赖
使用 mvn 创建的只是一个简单的 Maven 项目,需要添加上 SpringBoot 依赖。打开 pom.xml 文件添加如下依赖:
(1)、首先添加 spring-boot-starter-parent 作为parent,如下所示:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.11.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
(2)、添加 Web Starter
spring-boot-starter-parent是一个特殊的Starter,提供了一些Maven的默认配置,同时还提供了dependency-management,可以使开发者在引入其他依赖时不必输入版本号,方便依赖管理。Spring Boot中提供的Starter非常多,这些Starter主要为第三方库提供自动配置,例如要开发一个Web项目,就可以先引入一个Web的Starter,代码如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
最终完整 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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.11.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>org.yby.www</groupId>
<artifactId>springdemo1</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>springdemo1</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
步骤3、编写启动类
接下来创建项目的入口类,在Maven工程的java目录下创建项目的包,包里创建一个App类,代码如下:
@SpringBootApplication
public class App {
public static void main( String[] args ) {
SpringApplication.run(App.class);
}
}
2、在线创建项目
使用 mvn 命令创建项目相当麻烦,SpringBoot 可以通过在线创建项目,并且在创建时可以选择需要依赖的 start。
在线创建步骤如下:
步骤1、在线创建是 Spring Boot 官方提供的一种创建方式,在浏览器中访问如下网址:
步骤2、在打开的页面中我们可以选择项目的构建工具是 Maven 还是 Gradle、语言是 Java 还是其它、要使用的 Spring Boot 版本号、项目的组织 Id(包名)、模块名称以及项目的依赖。
步骤3、填写完信息后,点击 GENERATE 按钮即可生成项目模板,下载到本地解压后用 IDE 打开即可开始项目的开发了。
3、使用IDEA开发工具创建
不管是使用 mvn,还是使用 在线创建项目,都需要再次倒入到 IDE 中比较相对比较麻烦,还好我们可以直接通过 IDE 创建项目。
步骤如下:
步骤1、创建项目时选择 Spring Initializr,如下所示:
步骤2、接着输入项目的基本信息,包括组织 Id、模块名称、项目构建类型、最终生成包的类型、Java 的版本、开发语言、项目版本号、项目描述以及项目的包。如下图:
步骤3、选择依赖,选择项目所需要添加的依赖,之后IntelliJ IDEA会自动把选中的依赖添加到项目的pom.xml文件中。如下图所示:
因为我要创建一个 SpringBoot 项目,所以这里我们添加了个 Web 依赖。
步骤4、点击Next,在如下图中点击 Finish 按钮,一个可运行的 SpringBoot 项目就创建成功了。
二、运行项目
运行项目的方式也有三种,下面我们一 一介绍。
1、使用 Maven 命令启动
步骤1、打开 cmd 终端 进入项目文件夹,执行如下 mvn 命令启动项目:
mvn spring-boot:run
步骤2、终端中显示如下内容说明启动成功
步骤3、使用浏览器访问 http://localhost:8080 则显示如下:
2、在 IDE 中直接 main 方法启动
步骤1、在 IDE 中右键启动类,然后选择 run 按钮启动项目,如下:
步骤2、启动成功后在控制台输出如下内容
3、打包运行
Spring Boot 应用也可以直接打成 jar 包运行。在生产环境中,常常通过这样的方式来运行一个 Spring Boot 应用。
(1)、打包
有两种打包方式:
方式一、通过 mvn 命令打包
mvn package
方式二、通过 IDEA 打包。我们可以在IDEA 右侧点击 Maven -> Lifecycle -> package 进行打包。
(2)、打包完后,在项目的 target 目录下,会生成一个 jar 文件,如下:
(3)、通过 java -jar 命令启动 jar 文件
java -jar springdemo3-0.0.1-SNAPSHOT.jar
备注:
如果直接使用 java -jar springdemo3-0.0.1-SNAPSHOT.jar 启动项目后,如果关闭 终端后,项目也就关闭了。在启动时可以 使用 nohup。如:nohup java -jar springdemo3-0.0.1-SNAPSHOT.jar & ,这样在关闭终端后项目继续运行。
三、一个简单的样例
1、首先在项目中创建一个为 TestController 的 java 类。
如下所示:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/hello")
public String hello(){
return "This is first SpringBoot project.";
}
}
@RestController 注解:告诉 Spring 以字符串的形式渲染结果,并直接返回给调用者。该注解相当于 @ResponseBody + @Controller 合在一起的作用。
@RequestMapping 注解:提供路由信息,它告诉 Spring 任何来自“/hello”路径的 HTTP 请求(Get)都应该被映射到 hello 方法。
2、重新启动项目,在浏览器中访问 http://localhost:8080/hello 就可以访问此 Controller 的功能了。如下所示