Spring Boot 的快速入门
一.、概述
使用 Spring Boot 可以很容易地创建出能直接运行的独立的、生产级别的基于 Spring 的应用。
二、快速入门
2.1 创建 Maven 项目
- 打开 IDEA,点击菜单 File -> New -> Project.来创建项目
- 选择 Maven 类型,点击「Next」按钮,进入下一步。输入 Maven 的 GroupId、ArtifactId
- 点击「Next」按钮,继续进入下一步
- 点击「Finish」按钮,完成 Maven 项目的创建
2.2 引入依赖
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.iocoder</groupId>
<artifactId>demo01</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 从 Spring Boot 继承默认配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!-- 实现对 SpringMVC 的自动化配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
- 引入 spring-boot-starter-parent 作为父 POM,从而继承其默认配置。
- 引入 spring-boot-starter-web 依赖,实现对 SpringMVC 的自动化配置。同时该依赖会自动帮我们引入 SpringMVC 等相关依赖。
2.3 配置文件
在 Spring Boot 项目中,约定通过 application.yaml 配置文件,进行 Spring Boot 自动配置的 Bean 的自定义。在 resource 目录下,创建 application.yaml 配置文件。
server:
port: 8080 # 内嵌的 Tomcat 端口号。默认值为 8080。
通过 server.port 配置项,设置稍后启动的内嵌 Tomcat 端口为 8080 端口。
2.4 DemoController
创建 DemoController 类,提供一个简单的 HTTP API。
@RestController
@RequestMapping("/demo")
public class DemoController {
@GetMapping("/echo")
public String echo() {
return "echo";
}
}
2.5 Application 主程序
创建 Application 类,提供 Spring Boot 应用的启动类。
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在类上,添加 @SpringBootApplication 注解,声明是一个 Spring Boot 应用。通过该注解,可以带来 Spring Boot 自动配置等等功能。
在 #main(String[] args) 方法中,通过 SpringApplication#run(Class<?> primarySource, String… args) 方法,启动 Spring Boot 应用。
2.6 简单测试
- 执行 Application#main(String[] args) 方法,启动示例项目。
- 可以看到 IDEA 控制台输出 Spring Boot 启动日志如下:
// Spring Boot 自带 Banner
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.2.RELEASE)
// 启动 Java 进程使用的 PID 进程号
2020-02-08 15:38:25.724 INFO 10645 --- [ main] cn.iocoder.demo01.Application : Starting Application on MacBook-Pro-8 with PID 10645 (/Users/yunai/Java/demo01/target/classes started by yunai in /Users/yunai/Java/demo01)
// Spring Boot Profile 机制,暂时可以忽略
2020-02-08 15:38:25.727 INFO 10645 --- [ main] cn.iocoder.demo01.Application : No active profile set, falling back to default profiles: default
// 内嵌 Tomcat 启动
2020-02-08 15:38:26.503 INFO 10645 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2020-02-08 15:38:26.510 INFO 10645 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-02-08 15:38:26.510 INFO 10645 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.29]
2020-02-08 15:38:26.561 INFO 10645 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-02-08 15:38:26.561 INFO 10645 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 799 ms
2020-02-08 15:38:26.693 INFO 10645 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-02-08 15:38:26.839 INFO 10645 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2020-02-08 15:38:26.842 INFO 10645 --- [ main] cn.iocoder.demo01.Application : Started Application in 1.396 seconds (JVM running for 1.955)
// SpringMVC DispatcherServlet 初始化
2020-02-08 15:38:44.992 INFO 10645 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-02-08 15:38:44.992 INFO 10645 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-02-08 15:38:44.996 INFO 10645 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
// ... 暂时可以忽略
2020-02-08 15:39:37.113 INFO 10645 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
使用浏览器,访问 http://127.0.0.1:8080/demo/echo 接口,返回结果为 “echo”。
三、Spring Initializr
Spring Initializr可以通过使用 Spring Initializr工具,快速生成一个 Spring Boot 项目。
3.1 生成项目
- 使用浏览器,打开 https://start.spring.io/ 地址
- 点击「Explore」按钮,浏览生成的项目
- 关闭弹窗,然后点击「Generate」按钮,生成项目,会以 .zip 压缩包的方式进行下载
3.2 导入 IDEA
3.3 引入依赖
<?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.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.iocoder</groupId>
<artifactId>demo02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo02</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-web</artifactId>
</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>
- 设置 <java.version> 属性为 1.8,表示使用 JDK8。
- 引入 spring-boot-starter-test 依赖,实现对 Test 的自动化配置。
- 引入 spring-boot-maven-plugin 插件,用于将 Spring Boot 项目打包成 jar 或者 war 包。
3.4 配置文件
配置文件 application.properties 内容为空。
注意,Spring Boot 支持 YAML、PROPERTIES、JSON 等等格式的配置格式
3.5 Demo02Application
@SpringBootApplication
public class Demo02Application {
public static void main(String[] args) {
SpringApplication.run(Demo02Application.class, args);
}
}
3.6 Demo02ApplicationTests
@SpringBootTest
class Demo02ApplicationTests {
@Test
void contextLoads() {
}
}
- 在类上,添加 @SpringBootTest 注解,声明这是一个 Spring Boot 环境下的单元测试类。
- 运行 #contextLoads() 方法,执行一次单元测试。
四、IDEA x Spring Initializr
IDEA 内置了 Spring Boot 插件,提供了对 Spring Initializr 集成。
- 打开 IDEA,点击菜单 File -> New -> Project… 来创建项目。
- 选择 Spring Initializr 类型,点击「Next」按钮,进入下一步。输入 Maven 的 GroupId、ArtifactId
- 点击「Next」按钮,选择需要的依赖
- 点击「Next」按钮,之后点击「Finish」按钮,完成 Maven 项目的创建。