Spring Boot是一个基于Spring框架的快速开发脚手架,它极大地简化了Spring应用的初始化和搭建过程,提供了众多便利的功能和特性。
目录
[一、Spring Boot 历史](#一、Spring Boot 历史)
[二、Spring Boot 3的新特性介绍](#二、Spring Boot 3的新特性介绍)
[1、支持Java 17](#1、支持Java 17)
[2、基于Spring Framework 6](#2、基于Spring Framework 6)
[1. 创建 Maven 项目](#1. 创建 Maven 项目)
[2. 添加 Maven 依赖](#2. 添加 Maven 依赖)
[3. 创建主应用类](#3. 创建主应用类)
[4. 创建一个 REST 控制器](#4. 创建一个 REST 控制器)
[5. 运行你的应用](#5. 运行你的应用)
[6. 访问你的 REST API](#6. 访问你的 REST API)
一、Spring Boot 历史
1、背景介绍
- Spring框架的兴起:2003年,Rod Johnson成立了Interface公司,并推出了Spring Framework。2004年,Spring框架开源,公司改名为Spring Source。在后几年中,Spring Framework逐渐成为JavaEE平台下最流行的框架之一,用于简化Java应用程序的开发。
- 关键收购与整合:2008年,Spring Source收购了Apache Servlet和Tomcat,为Spring Boot内嵌Web容器奠定了基础。2009年,Spring Source被VMWare以4.6亿美金收购,之后Spring公司接连收购了许多优秀的开源中间件,如RabbitMQ、Redis等。
- Pivotal公司的介入:2013年,Spring Source被Pivotal公司收购,后者致力于支持和推动Spring应用框架的发展。同年,Pivotal团队开始研发Spring Boot。
- Spring Boot的发布:2014年4月,Pivotal团队发布了Spring Boot的第一个版本,这是一个全新的开源轻量级框架,旨在简化新Spring应用的初始搭建及开发过程。
2、版本介绍
- Spring Boot 1.x:作为第一个稳定版本,Spring Boot 1.x引入了自动配置、起步依赖、嵌入式Web服务器等功能,大大提高了开发效率和部署效率。
- Spring Boot 2.x:在Spring 5.x的基础上开发,于2018年发布。这个版本引入了许多新功能,如全局配置、WebFlux支持、Spring Data 2.x、Spring Security 5.x等,并对一些旧的功能进行了改进和优化。
- Spring Boot 3.x:Spring Boot框架的一个重大更新版本,它带来了对Java 17的支持、基于Spring Framework 6的优化、原生镜像支持以及更强大的安全特性等,显著提升了开发体验和应用性能,是现代Java开发的重要工具。截止2024年8月,最新版本为3.3.3。
二、Spring Boot 3的新特性介绍
1、支持Java 17
- Spring Boot 3.x支持Java 17,这是一个长期支持(LTS)版本,带来了许多新特性和性能改进。使用Java 17,开发者可以利用其最新的语言特性和增强的性能。
2、基于Spring Framework 6
- Spring Framework 6的引入为Spring Boot 3.x带来了许多核心功能的优化,包括对Jakarta EE 9的全面支持,这是从Java EE到Jakarta EE的迁移结果。
3、原生镜像支持
- Spring Boot 3.x引入了对GraalVM原生镜像的支持。GraalVM是一个高性能的JVM和多语言运行时,能够将Java应用编译成原生可执行文件。原生镜像能够显著减少应用的启动时间和内存占用,特别适合微服务和云原生应用。
4、性能优化
- Spring Boot 3.x通过多种方式优化了应用的启动时间和内存使用。除了支持GraalVM原生镜像外,还对Spring核心进行了优化,减少了启动过程中的开销。
5、安全性增强
- 在安全性方面,Spring Boot 3.x进行了多项改进,包括引入更强大的密码存储机制、更灵活的安全配置选项,以及对OAuth 2.1的支持。这些改进使得Spring Boot应用在处理安全问题时更加便捷和可靠。
6、配置系统改进
- Spring Boot 3.x对配置系统进行了改进,提供了更灵活的配置方式。例如,支持使用YAML文件进行配置,并且对配置属性进行了更严格的校验和提示。
7、依赖管理机制强化
- Spring Boot 3.X通过改进POM依赖结构和升级
spring-boot-dependencies
BOM文件,使得依赖版本管理更为精细与统一,降低了不同第三方库之间的兼容性问题。
8、Web技术更新
- Spring WebFlux获得了重大更新,例如对HTTP/3协议的支持,增强了响应式编程模式的能力。同时,Spring MVC也得到了改进,增加了对OpenAPI规范的原生支持。
9、其他更新
- Spring Boot 3.x还引入了其他更新,如废弃了spring.factories文件,改用META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports进行自动配置导入。
- jakarta替换javax的变更,内嵌的tomcat不再支持javax.servlet以及其它javax的包,必须换用jakarta系列规范与API。
- Log4j2的增强,提供了更强大的日志管理功能。
三、迁移与兼容性
- 尽管Spring Boot 3.x带来了许多新特性和改进,但它在许多方面与Spring Boot 2.x保持了兼容性。然而,由于引入了许多新特性和改进,某些地方可能需要进行调整,如使用Jakarta EE 9 API替换Java EE API等。
- Spring Boot官方提供了详细的迁移指南,帮助开发者从Spring Boot 2.x顺利迁移到3.x。迁移过程通常包括更新项目中的依赖版本、根据新的API和配置要求调整代码逻辑和配置文件、以及全面测试应用以确保迁移后的功能和性能没有问题。
四、代码入门示例
1. 创建 Maven 项目
首先,你需要使用 Maven 或 Gradle 创建一个新的 Java 项目。在这个例子中,我们将使用 Maven。确保你的开发环境已经安装了 JDK 17 和 Maven。
2. 添加 Maven 依赖
在你的 pom.xml
文件中,添加 Spring Boot 的起步依赖和 Spring Web 依赖(用于创建 REST API)。
java
<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>com.example</groupId>
<artifactId>springboot-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-demo</name>
<description>Demo project for Spring Boot 3.x</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加其他依赖 -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3. 创建主应用类
在你的项目中,创建一个主应用类 SpringBootDemoApplication.java
,并使用 @SpringBootApplication
注解。
java
package com.example.springbootdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
4. 创建一个 REST 控制器
接下来,创建一个 REST 控制器 HelloController.java
,用于处理 HTTP 请求。
java
package com.example.springbootdemo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/")
public String hello() {
return "Hello, Spring Boot 3.x!";
}
}
5. 运行你的应用
使用 Maven 命令行工具,在项目根目录下运行以下命令来启动你的 Spring Boot 应用:
java
mvn spring-boot:run
6. 访问你的 REST API
启动应用后,你可以使用浏览器或 Postman 等工具访问 http://localhost:8080/
,你应该会看到响应 Hello, Spring Boot 3.x!
。
总结:
Spring Boot 3是基于Java 17和Spring Framework 6的轻量级框架,旨在简化Spring应用的初始化和开发过程。它支持自动配置、嵌入式Web服务器等功能,并引入了对Java 17、Jakarta EE 9、GraalVM原生镜像等新特性的支持,显著提升了开发体验和应用性能。Spring Boot 3还优化了性能、增强了安全性,并改进了配置系统和依赖管理机制。尽管与Spring Boot 2.x保持兼容性,但迁移时需注意API和配置的更新。通过Maven或Gradle创建项目,添加Spring Boot起步依赖,即可快速开发REST API等应用。