Skip to content

SpringBoot 3 快速入门

1. 环境要求

环境&工具版本(or later)
SpringBoot3.0.5+
IDEA2021.2.1+
Java17+
Maven3.5+
Tomcat10.0+
Servlet5.0+
GraalVM Community22.3+
Native Build Tools0.9.19+

2. SpringBoot概述

SpringBoot就是Spring的脚手架,SpringBoot帮我们简单、快速地创建一个独立的、生产级别的Spring应用,只需要编写少量配置即可快速整合Spring平台以及第三方技术。特性有以下:

  1. 快速创建独立Spring应用
    比如SSM:导包、写配置、启动运行
  2. 直接嵌入Tomcat、Jetty或者Undertow(无需部署 war 包)
  3. 提供可选的starter,简化应用整合
    比如starter有:web、json、邮件、oss(对象存储)、异步、定时任务、缓存
  4. 按需自动配置Spring以及第三方库
  5. 提供生产级特性:如 监控指标、健康检查、外部化配置等
  6. 无代码生成、无xml文件
    代码生成工具会生成全套代码,往往不少代码用不上,而且容易导致排查问题不是很方便,避免xml配置繁琐

3. 快速使用SpringBoot

3.1 安装IDEA

访问网址: https://www.jetbrains.com.cn/idea/download/other.html
IDEA版本图 下载后安装即可

3.2 安装springboot插件

启动IDEA, 点击Plugins-> 搜索springboot Alt text

3.3 创建SpringBoot项目

  1. 点击Projects->New Alt text
  2. 选择最后一个选项:SpringBoot-Gen, 点击下一步
    Alt text
  3. 输入项目信息 Alt text
  4. 选择项目依赖模块 Alt text
  5. 确认文件路径,点击create Alt text

提示

如果遇到以下问题,需要调整下配置:
Alt text 需要设置IDEA自带的Maven:
Alt text 另外SpringBoot3之后版本号中没有了RELEASE字样,如遇到有需要删除,不然影响下载依赖jar包 Alt text

  1. 启动项目,执行main方法 Alt text
  2. 浏览器访问,报404,说明项目能够访问 Alt text

4. 部署SpringBoot

4.1 项目打包

  1. 首先检查pom.xml中是否配置SpringBoot打包工具
xml
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>3.1.9</version>
            <configuration>
            </configuration>
        </plugin>
    </plugins>
</build>
  1. 执行打包, 选择package命令,点击 ▶️
    Alt text
  2. 将生成的jar包放到指定文件夹下面(模拟部署项目到服务器😂),使用java -jar命令启动:
cmd
## 首先检查环境是否jdk21
C:\Users\mi\Desktop\vue_ss>java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
## 设置临时Java环境变量
C:\Users\mi\Desktop\vue_ss>set path=D:\jdk\jdk21\bin

C:\Users\mi\Desktop\vue_ss>java -version
java version "21.0.2" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 21.0.2+13-LTS-58)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.2+13-LTS-58, mixed mode, sharing)
C:\Users\mi\Desktop\vue_ss>java -jar springboot-demo-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.9)

2024-03-20T11:33:08.813+08:00  INFO 12408 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication v0.0.1-SNAPSHOT using Java 21.0.2 with PID 12408 (C:\Users\mi\Desktop\vue_ss\springboot-demo-0.0.1-SNAPSHOT.jar started by mi in C:\Users\mi\Desktop\vue_ss)
2024-03-20T11:33:08.817+08:00  INFO 12408 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
2024-03-20T11:33:09.828+08:00  INFO 12408 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2024-03-20T11:33:09.842+08:00  INFO 12408 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-03-20T11:33:09.843+08:00  INFO 12408 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.19]
2024-03-20T11:33:09.944+08:00  INFO 12408 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-03-20T11:33:09.950+08:00  INFO 12408 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1067 ms
2024-03-20T11:33:10.339+08:00  INFO 12408 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2024-03-20T11:33:10.357+08:00  INFO 12408 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 1.92 seconds (process running for 2.363)

可以看见SpringBoot项目启动了,端口是8080。
4. 部署临时调整配置信息,比如修改端口号,改为8888
在springboot-demo-0.0.1-SNAPSHOT.jar同目录下面创建application.properties文件, 写入以下内容: Alt text 重新启动项目:

cmd
C:\Users\mi\Desktop\vue_ss>java -jar springboot-demo-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.9)

2024-03-20T11:33:30.319+08:00  INFO 21420 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication v0.0.1-SNAPSHOT using Java 21.0.2 with PID 21420 (C:\Users\mi\Desktop\vue_ss\springboot-demo-0.0.1-SNAPSHOT.jar started by mi in C:\Users\mi\Desktop\vue_ss)
2024-03-20T11:33:30.323+08:00  INFO 21420 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
2024-03-20T11:33:31.217+08:00  INFO 21420 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8888 (http)
2024-03-20T11:33:31.230+08:00  INFO 21420 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-03-20T11:33:31.230+08:00  INFO 21420 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.19]
2024-03-20T11:33:31.323+08:00  INFO 21420 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-03-20T11:33:31.324+08:00  INFO 21420 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 945 ms
2024-03-20T11:33:31.698+08:00  INFO 21420 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8888 (http) with context path ''
2024-03-20T11:33:31.720+08:00  INFO 21420 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 1.769 seconds (process running for 2.226)

可以看见重启后配置生效,说明SpringBoot项目相比传统Web项目更加灵活, 无需打开War或者Jar包即可完成配置修改。

说明

说明1:
java -classpath 需要在jar包后面指定全类名;
java -jar 需要查看一下解压的jar包META-INF/ MANIFEST.MF文件中,Main-Class是否有全类名。如果有可以用java -jar,如果没有就需要用到java -classpath;
说明2:
/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称"黑洞"。

  • 标准输入0: 从键盘获得输入 /proc/self/fd/0
  • 标准输出1: 输出到屏幕(即控制台) /proc/self/fd/1
  • 错误输出2: 输出到屏幕(即控制台) /proc/self/fd/2
    上面的SpringBoot命令完善后:
    java -jar springboot-demo-0.0.1-SNAPSHOT.jar 1>/dev/null 2>/dev/null &, 由于输出1和输出2都是目的地一样,可以简写:
    java -jar springboot-demo-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &