SpringBoot 3 快速入门
1. 环境要求
环境&工具 | 版本(or later) |
---|---|
SpringBoot | 3.0.5+ |
IDEA | 2021.2.1+ |
Java | 17+ |
Maven | 3.5+ |
Tomcat | 10.0+ |
Servlet | 5.0+ |
GraalVM Community | 22.3+ |
Native Build Tools | 0.9.19+ |
2. SpringBoot概述
SpringBoot就是Spring的脚手架,SpringBoot帮我们简单、快速地创建一个独立的、生产级别的Spring应用,只需要编写少量配置即可快速整合Spring平台以及第三方技术。特性有以下:
- 快速创建独立Spring应用
比如SSM:导包、写配置、启动运行 - 直接嵌入Tomcat、Jetty或者Undertow(无需部署 war 包)
- 提供可选的starter,简化应用整合
比如starter有:web、json、邮件、oss(对象存储)、异步、定时任务、缓存 - 按需自动配置Spring以及第三方库
- 提供生产级特性:如 监控指标、健康检查、外部化配置等
- 无代码生成、无xml文件
代码生成工具会生成全套代码,往往不少代码用不上,而且容易导致排查问题不是很方便,避免xml配置繁琐
3. 快速使用SpringBoot
3.1 安装IDEA
访问网址: https://www.jetbrains.com.cn/idea/download/other.html 下载后安装即可
3.2 安装springboot插件
启动IDEA, 点击Plugins-> 搜索springboot
3.3 创建SpringBoot项目
- 点击Projects->New
- 选择最后一个选项:SpringBoot-Gen, 点击下一步
- 输入项目信息
- 选择项目依赖模块
- 确认文件路径,点击create
提示
如果遇到以下问题,需要调整下配置: 需要设置IDEA自带的Maven:
另外SpringBoot3之后版本号中没有了
RELEASE
字样,如遇到有需要删除,不然影响下载依赖jar包
- 启动项目,执行main方法
- 浏览器访问,报404,说明项目能够访问
4. 部署SpringBoot
4.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>
- 执行打包, 选择package命令,点击 ▶️
- 将生成的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文件, 写入以下内容: 重新启动项目:
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 &