Spring Boot 3 入门介绍

Spring Boot是一个基于Spring框架的快速开发脚手架,它极大地简化了Spring应用的初始化和搭建过程,提供了众多便利的功能和特性。

目录

[一、Spring Boot 历史](#一、Spring Boot 历史)

1、背景介绍

2、版本介绍

[二、Spring Boot 3的新特性介绍](#二、Spring Boot 3的新特性介绍)

[1、支持Java 17](#1、支持Java 17)

[2、基于Spring Framework 6](#2、基于Spring Framework 6)

3、原生镜像支持

4、性能优化

5、安全性增强

6、配置系统改进

7、依赖管理机制强化

8、Web技术更新

9、其他更新

三、迁移与兼容性

四、代码入门示例

[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等应用。

相关推荐
没有bug.的程序员11 小时前
GC日志解析:从日志看全流程
java·网络·jvm·spring·日志·gc
WZTTMoon11 小时前
开发中反复查的 Spring Boot 注解,一次性整理到位
java·spring boot·后端
长沙古天乐11 小时前
Spring Boot应用中配置消费端随服务启动循环消费消息
spring boot·后端·linq
葡萄城技术团队11 小时前
Excel 文件到底是怎么坏掉的?深入 OOXML 底层原理讲解修复策略
android·java·excel
照物华11 小时前
MySQL 软删除 (Soft Delete) 与唯一索引 (Unique Constraint) 的冲突与解决
java·mysql
mjhcsp11 小时前
C++ 后缀自动机(SAM):原理、实现与应用全解析
java·c++·算法
张np12 小时前
java基础-Vector(向量)
java
光头程序员12 小时前
学习笔记——常识解答之垃圾回收机制
java·笔记·学习
渡我白衣12 小时前
并行的野心与现实——彻底拆解 C++ 标准并行算法(<execution>)的模型、陷阱与性能真相
java·开发语言·网络·c++·人工智能·windows·vscode
czlczl2002092512 小时前
SpringBoot中web请求路径匹配的两种风格
java·前端·spring boot