开始
1. Spring靴介绍
Spring Boot 帮助你创建独立的基于生产级的 Spring 应用程序,这些应用可以运行。 我们对Spring平台和第三方库持持独立观点,确保你能以最少的麻烦开始。 大多数 Spring Boot 应用几乎不需要 Spring 配置。
你可以用 Spring Boot 创建 Java 应用程序,这些应用可以通过以下方式启动Java -jar或者更传统的战争部署。
我们的主要目标是:
-
为所有春季开发提供一个极其快速且广泛可及的入门体验。
-
开箱即用自己的观点,但当需求开始偏离默认时,尽快让开。
-
提供一系列大型项目中常见的非功能性功能(如嵌入式服务器、安全、指标、健康检查和外部配置)。
-
完全不需代码生成(除非针对原生图像),也不需要XML配置。
2. 系统需求
Spring Boot 3.2.12 至少需要 Java 17,并且兼容最高至 Java 23 的版本。还需要 Spring Framework 6.1.x 或更高版本。
为以下构建工具提供了显式构建支持:
| 构建工具 | 版本 |
|---|---|
梅文 |
3.6.3或更高版本 |
格拉德勒 |
7.x(7.5 或更高版本)和 8.x |
2.1. Servlet 容器
Spring Boot 支持以下嵌入式 servlet 容器:
| 名称 | Servlet 版本 |
|---|---|
Tomcat 10.1 |
6.0 |
Jetty12.0 |
6.0 |
暗流 2.3 |
6.0 |
你也可以将 Spring Boot 应用部署到任何兼容 Servlet 5.0+ 的容器上。
2.2. GraalVM 原生镜像
Spring Boot 应用程序可以使用 GraalVM 22.3 或更高版本转换为原生镜像。
图像可以通过原生构建工具、Gradle/Maven 插件创建,或者原生图像工具由 GraalVM 提供。
你也可以用 native-image Paketo 构建包创建原生图片。
支持以下版本:
| 名称 | 版本 |
|---|---|
GraalVM 社区 |
22.3 |
原生构建工具 |
0.9.28 |
3. 安装 Spring Boot
Spring Boot 可以与“经典”Java 开发工具一起使用,也可以作为命令行工具安装。 无论哪种情况,你都需要Java SDK v17或更高版本。 在开始之前,你应该使用以下命令检查当前的Java安装情况:
$ java -version
如果你是 Java 开发新手,或者想尝试 Spring Boot,建议先试试 Spring Boot CLI(命令行接口)。 否则,请继续阅读“经典”安装说明。
3.1. Java 开发者的安装说明
你可以像使用任何标准Java库一样使用Spring Boot。
为此,请包含相应的Spring靴*.jar你的类路径上的文件。
Spring Boot 不需要任何特殊工具集成,所以你可以使用任何 IDE 或文本编辑器。
此外,Spring Boot 应用程序本身没有特别之处,所以你可以像运行其他 Java 程序一样运行和调试 Spring Boot 应用。
虽然你可以复制 Spring Boot jar,但我们通常建议使用支持依赖管理的构建工具(如 Maven 或 Gradle)。
3.1.1. Maven安装
Spring Boot 兼容 Apache Maven 3.6.3 或更高版本。 如果你还没有安装Maven,可以按照 maven.apache.org 的说明作。
在许多作系统上,Maven 可以通过包管理器安装。
如果你用的是OSX自制软件,试试看brew安装专家.
Ubuntu 用户可以运行sudo apt-get 安装 maven.
Windows 用户使用 Chocolatey 可以运行Choco 安装专家来自一个提升的(管理员)提示。 |
Spring Boot 依赖org.springframework.boot组号。
通常,您的 Maven POM 文件继承自Spring靴启动父并向一个或多个“起始者”声明依赖。
Spring Boot 还提供了一个可选的 Maven 插件,用于创建可执行的 jar。
关于如何开始使用 Spring Boot 和 Maven 的详细信息,可以在 Maven 插件参考指南的入门部分找到。
3.1.2. Gradle 安装
Spring Boot 兼容 Gradle 7.x(7.5 或更高版本)和 8.x。 如果您还没有安装Gradle,可以按照 gradle.org 上的说明作。
Spring Boot 依赖可以通过以下方式声明org.springframework.boot 群.
通常,你的项目会声明依赖到一个或多个“起始者”。
Spring Boot 提供了一个实用的 Gradle 插件,可用于简化依赖声明和创建可执行的 jar。
关于如何开始使用 Spring Boot 和 Gradle 的详细信息,可以在 Gradle 插件参考指南的入门部分找到。
3.2. 安装 Spring Boot CLI
Spring Boot CLI(命令行界面)是一个命令行工具,你可以用它快速用 Spring 进行原型制作。
你不必用CLI来配合Spring Boot,但它是快速启动Spring应用的一种方式,无需IDE。
3.2.1. 手动安装
你可以从以下地点之一下载 Spring CLI 发行版:
下载完成后,按照解压档案中的INSTALL.txt指示作。
总之,有Spring文字(spring.bat适用于Windows)在站/目录.zip文件。
或者,你可以使用Java -jar其中。罐file(脚本帮助你确保类路径正确设置)。
3.2.2. 使用 SDKMAN! 安装!
SDKMAN!(软件开发套件管理器)可用于管理多个版本的各种二进制 SDK,包括 Groovy 和 Spring Boot CLI。 去找SDKMAN!从 sdkman.io 下载,并使用以下命令安装 Spring Boot:
$ sdk install springboot
$ spring --version
Spring CLI v3.2.12
如果你为CLI开发功能并希望访问你构建的版本,请使用以下命令:
$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-3.2.12-bin/spring-3.2.12/
$ sdk default springboot dev
$ spring --version
Spring CLI v3.2.12
前述指令安装一个本地实例Spring称为开发实例。
它指向你的目标构建位置,所以每次你重建Spring Boot时,Spring是最新的。
你可以通过执行以下命令来查看:
$ sdk ls springboot
================================================================================
Available Springboot Versions
================================================================================
> + dev
* 3.2.12
================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
3.2.3. OSX 自制安装
如果你在Mac上使用Homebrew,可以通过以下命令安装Spring Boot CLI:
$ brew tap spring-io/tap
$ brew install spring-boot
自制安装Spring自/usr/local/bin.
如果你看不到配方,说明你的咖啡安装可能已经过时。
那就跑吧酿造更新再试一次。 |
3.2.4. MacPorts 安装
如果你使用的是Mac并使用MacPorts,可以通过以下命令安装Spring Boot CLI:
$ sudo port install spring-boot-cli
3.2.5. 命令行补全
Spring Boot CLI 包含为 BASH 和 zsh shell 提供命令补全的脚本。
您可以源该剧本名为Spring (_Spring对于ZSH)或者把它放在你个人或系统范围内的BASH完成初始化中。
在Debian系统中,系统范围的脚本是<安装地点>/shell-completion/<bash|zsh>该目录中的所有脚本在新 shell 启动时都会被执行。
例如,如果你用 SDKMAN! 手动运行脚本,请使用以下命令:
$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
encodepassword help init shell version
| 如果你通过Homebrew或MacPorts安装Spring Boot CLI,命令行完成脚本会自动注册到你的shell中。 |
3.2.6. Windows Scoop 安装
如果你在Windows上并使用Scoop,可以通过以下命令安装Spring Boot CLI:
> scoop bucket add extras > scoop install springboot
Scoop安装Spring自~/scoop/apps/springboot/current/bin.
如果你看不到应用清单,说明你的 Scoop 安装可能已过时。
那就跑吧独家新闻更新再试一次。 |
4. 开发你的第一个春季靴应用
本节介绍如何开发一个小型“Hello World!”网页应用,突出Spring Boot的一些关键功能。 你可以选择Maven或Gradle作为构建系统。
|
你可以通过进入 start.spring.io,从依赖搜索器中选择“Web”启动程序,从而简化步骤。 这样做会生成新的项目结构,让你能立即开始编码。 详情请查阅 start.spring.io 用户指南。 |
4.1. 前提条件
在开始之前,打开终端并执行以下命令,确保你安装的Java版本有效:
$ java -version
openjdk version "17.0.4.1" 2022-08-12 LTS
OpenJDK Runtime Environment (build 17.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM (build 17.0.4.1+1-LTS, mixed mode, sharing)
| 这个示例需要在自己的目录中创建。 后续指令假设你已经创建了一个合适的目录,并且它是你当前的目录。 |
4.1.1. 梅文
如果你想使用 Maven,确保你安装了 Maven:
$ mvn -v
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: usr/Users/developer/tools/maven/3.8.5
Java version: 17.0.4.1, vendor: BellSoft, runtime: /Users/developer/sdkman/candidates/java/17.0.4.1-librca
4.1.2. Gradle
如果你想使用 Gradle,请确保你安装了 Gradle:
$ gradle --version
------------------------------------------------------------
Gradle 8.1.1
------------------------------------------------------------
Build time: 2023-04-21 12:31:26 UTC
Revision: 1cf537a851c635c364a4214885f8b9798051175b
Kotlin: 1.8.10
Groovy: 3.0.15
Ant: Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM: 17.0.7 (BellSoft 17.0.7+7-LTS)
OS: Linux 6.2.12-200.fc37.aarch64 aarch64
4.2. 与Maven一起建立项目
我们需要先创建一个Mavenpom.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>
<groupId>com.example</groupId>
<artifactId>myproject</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.12</version>
</parent>
<!-- Additional lines to be added here... -->
</project>
前面的列表应该能给你一个可运行的组装方案。
你可以通过运行来测试MVN 封装(暂时你可以忽略“罐子将是空的——没有内容被标记为包含!”的警告)。
| 此时,你可以将项目导入集成开发环境(大多数现代Java IDE内置支持Maven)。 为了简化,我们继续使用纯文本编辑器。 |
4.3. 与 Gradle 搭建项目
我们需要先创建一个Gradlebuild.gradle文件。
这build.gradle是用来构建你项目的构建脚本。
打开你喜欢的文本编辑器,添加以下内容:
plugins {
id 'java'
id 'org.springframework.boot' version '3.2.12'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
}
前面的列表应该能给你一个可运行的组装方案。
你可以通过运行来测试Gradle班级.
| 此时,你可以将项目导入集成环境(大多数现代 Java IDE 内置支持 Gradle)。 为了简化,我们继续使用纯文本编辑器。 |
4.4. 添加类路径依赖
Spring Boot 提供了多个“起始”,可以让你把 jars 添加到你的类路径中。 “起始程序”提供了你在开发特定应用类型时可能需要的依赖关系。
4.4.1. 梅文
大多数 Spring Boot 应用程序使用Spring靴启动父在父母POM的部分。
这Spring靴启动父是一个特殊的起始角色,提供有用的Maven默认值。
它还提供了依赖管理所以你可以省略版本“祝福”依赖标签。
由于我们正在开发一个网页应用,我们会添加一个Spring Boot启动网Dependency。
在此之前,我们可以通过运行以下命令查看当前的状态:
$ mvn dependency:tree
[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
这MVN 依赖:树命令打印出你项目依赖关系的树状表示。
你可以看到Spring靴启动父单独不提供依赖关系。
要添加必要的依赖关系,请编辑你的pom.xml并加上Spring Boot启动网紧接其下父母部分:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
如果你逃跑MVN 依赖:树你会再次看到,现在有许多额外的依赖,包括 Tomcat 的 Web 服务器和 Spring Boot 本身。
4.4.2. Gradle
大多数 Spring Boot 应用程序使用org.springframework.bootGradle 插件。
该插件提供了有用的默认值和 Gradle 任务。
这io.spring.dependency-managementGradle 插件提供依赖管理,所以你可以省略版本“祝福”依赖标签。
由于我们正在开发一个网页应用,我们会添加一个Spring Boot启动网Dependency。
在此之前,我们可以通过运行以下命令查看当前的状态:
$ gradle dependencies
> Task :dependencies
------------------------------------------------------------
Root project 'myproject'
------------------------------------------------------------
这Gradle 依赖关系命令打印出你项目依赖关系的树状表示。
目前,这个项目没有依赖。
要添加必要的依赖关系,请编辑你的build.gradle并加上Spring Boot启动网依赖关系依赖部分:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
如果你逃跑Gradle 依赖关系你会再次看到,现在有许多额外的依赖,包括 Tomcat 的 Web 服务器和 Spring Boot 本身。
4.5. 编写代码
为了完成我们的应用程序,我们需要创建一个单一的Java文件。
默认情况下,Maven 和 Gradle 编译源代码从src/main/java所以你需要创建那个目录结构,然后添加一个名为src/main/java/MyApplication.java包含以下代码:
package com.example;
@RestController
@SpringBootApplication
public class MyApplication {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@RestController
@SpringBootApplication
class MyApplication {
@RequestMapping("/")
fun home() = "Hello World!"
}
fun main(args: Array<String>) {
runApplication<MyApplication>(*args)
}
虽然这里的代码不多,但确实发生了不少事情。 接下来的几个部分,我们会逐步介绍重要部分。
4.5.1. @RestController和@RequestMapping注释
我们 的第一个注释我的应用类为@RestController.
这被称为刻板印象注释。
它为阅读代码的人和Spring提供了提示,说明该类扮演着特定角色。
在这种情况下,我们的类是一个网络@Controller因此 Spring 在处理来访的网页请求时会考虑它。
这@RequestMapping注释提供“路由”信息。
它告诉 Spring,任何带有路径的 HTTP 请求都应映射到/家方法。
这@RestController注释会让 Spring 直接将生成的字符串渲染回调用者。
这@RestController和@RequestMapping注释是 Spring MVC 的注释(它们并非专属于 Spring Boot)。
详情请参见春季参考文档中的MVC部分。 |
4.5.2. @SpringBootApplication注释
第二类注释为@SpringBootApplication.
这种注释被称为元注释,它将@SpringBootConfiguration,@EnableAutoConfiguration和@ComponentScan.
其中,我们最感兴趣的注释是@EnableAutoConfiguration.@EnableAutoConfiguration它告诉 Spring Boot 根据你添加的 jar 依赖“猜测”你想如何配置 Spring。
因为Spring Boot启动网添加了Tomcat和Spring MVC,自动配置假设你正在开发一个网页应用,并相应地设置Spring。
4.6. 运行示例
4.6.1. 梅文
此时,你的申请应该可以正常工作了。
因为你使用了Spring靴启动父POM,你有个有用的执行你可以用来开始申请的目标。
类型MVN Spring-boot:run从根项目目录启动应用程序。
你应该会看到类似以下的输出:
$ mvn spring-boot:run
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.12)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 0.906 seconds (process running for 6.514)
如果你打开网页浏览器本地主持人:8080你应该会看到以下输出:
Hello World!
要优雅地退出应用,请按ctrl-c.
4.6.2. Gradle
此时,你的申请应该可以正常工作了。
因为你使用了org.springframework.bootGradle 插件,你有个有用的工具启动运行你可以用来开始申请的目标。
类型gradle bootRun从根项目目录启动应用程序。
你应该会看到类似以下的输出:
$ gradle bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.12)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 0.906 seconds (process running for 6.514)
如果你打开网页浏览器本地主持人:8080你应该会看到以下输出:
Hello World!
要优雅地退出应用,请按ctrl-c.
4.7. 创建可执行容器
我们最后以创建一个完全自包含的可执行 jar 文件来结束示例,可以在生产环境中运行。 可执行jar(有时称为“uber jars”或“fatjars”)是包含你编译后的类以及所有需要运行的jar依赖的归档。
4.7.1. 梅文
要创建可执行jar,我们需要添加Spring-boot-Maven-插件我们pom.xml.
为此,请在依赖部分:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这Spring靴启动父POM包括<处决>用于绑定重新包装目标。
如果你不使用父POM,你需要自己声明该配置。
详情请参见插件文档。 |
保存你的pom.xml然后跑MVN 封装从命令行中,具体如下:
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:3.2.12:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
如果你看目标目录,你应该看看myproject-0.0.1-SNAPSHOT.jar.
文件大小大约是18MB。
如果你想偷看里面,可以用JAR TVF如下:
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar
你还应该看到一个更小的文件,名为myproject-0.0.1-SNAPSHOT.jar。原创在目标目录。
这是Maven在被Spring Boot重新打包之前创建的原始jar文件。
要运行该应用程序,请使用Java -jar命令如下:
$ java -jar target/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.12)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 0.999 seconds (process running for 1.253)
和之前一样,要退出应用,请按ctrl-c.
4.7.2. Gradle
要创建可执行jar,我们需要运行gradle bootJar从命令行中,具体如下:
$ gradle bootJar
BUILD SUCCESSFUL in 639ms
3 actionable tasks: 3 executed
如果你看build/libs目录,你应该看看myproject-0.0.1-SNAPSHOT.jar.
文件大小大约是18MB。
如果你想偷看里面,可以用JAR TVF如下:
$ jar tvf build/libs/myproject-0.0.1-SNAPSHOT.jar
要运行该应用程序,请使用Java -jar命令如下:
$ java -jar build/libs/myproject-0.0.1-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.2.12)
....... . . .
....... . . . (log output here)
....... . . .
........ Started MyApplication in 0.999 seconds (process running for 1.253)
和之前一样,要退出应用,请按ctrl-c.
5. 接下来要读什么
希望本节能提供一些Spring Boot的基础知识,帮助你开始写自己的申请。 如果你是任务型开发者,建议你跳转到 spring.io,跟着一些入门指南学习,解决“我该如何用Spring实现?”的具体问题。 我们还有针对 Spring Boot 的“作指南”参考文档。
否则,下一步合乎逻辑的步骤就是阅读using.html。 如果你真的很急,也可以直接去了解一下Spring Boot的功能。