SpringBoot3.0快速上手
# 前言
2022年1128日,Spring Boot 3.0已经正式发布了,这是一次非常大的更新,距离3.0版本的普及还有一段时间。
其中最为关注的AOT功能,早在2021年Spring Native早期阶段进行了尝鲜,对此期待不已,时隔一年,Spring生态正式迎来了云原生新时代!
# 一、新特性
我们首先看一下SpringBoot3.0最为重大的几个更新吧:
- 最低JDK版本必须是 Java 17
- 依赖Spring Framework 6
- 支持GraalVM Native
这三个可谓是Java正式步入云原生时代的标志,如今在Golang统治云原生的时代,Java能否再延续下一个时代,就看关键就看SpringBoot3.0了。
SpringBoot还包含一些其他特性,这不是目前我们主要关注的点,特别对于2.7以下的低版本升级3.0,难度还是比较大的,需要做许多适配工作,后面我们再专门针对升级进行讨论。
附上官网发布说明地址: https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes
# 二、快速开始
话不多说,我们先直接利用Spring Initializr快速开始一个hello world工程。
https://start.spring.io/
这里我们选择使用maven创建一个工程,待会儿再试试Gradle
这里我们选择3.0.0版本,添加 GraalVM和Web依赖
# 三、工程分析
这是生成好的maven pom文件:
<?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>3.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.flyoo.demo</groupId>
<artifactId>spring-triple-maven-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-triple-maven-demo</name>
<description>spring-triple-maven-demo</description>
<properties>
<java.version>17</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>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
其中最为关键的两个地方:
SpringBoot依赖管理作为parent:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
2
3
4
5
6
GraalVM打包native的插件
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
2
3
4
# 四、实现hello world
# 五、打包部署
# 5.1 打包普通fatjar
# 5.2 打包Native镜像
# 六、总结
单从hello world这么简单的工程来看,SpringBoot3.0使用上跟SpringBoot2.0也没有多少不同。
接下来我们分别从细节出发,真正解锁SpringBoot的打开方式。
下一篇我们解锁SpringBoot GraalVM详细实用姿势