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

相关推荐
天天扭码32 分钟前
五天SpringCloud计划——DAY1之mybatis-plus的使用
java·spring cloud·mybatis
程序猿小柒38 分钟前
leetcode hot100【LeetCode 4.寻找两个正序数组的中位数】java实现
java·算法·leetcode
不爱学习的YY酱1 小时前
【操作系统不挂科】<CPU调度(13)>选择题(带答案与解析)
java·linux·前端·算法·操作系统
丁总学Java1 小时前
Maven项目打包,com.sun.tools.javac.processing
java·maven
kikyo哎哟喂2 小时前
Java 代理模式详解
java·开发语言·代理模式
duration~2 小时前
SpringAOP模拟实现
java·开发语言
小码ssim2 小时前
IDEA使用tips(LTS✍)
java·ide·intellij-idea
潜洋2 小时前
Spring Boot教程之五:在 IntelliJ IDEA 中运行第一个 Spring Boot 应用程序
java·spring boot·后端
暮志未晚Webgl3 小时前
109. UE5 GAS RPG 实现检查点的存档功能
android·java·ue5
灯雾️3 小时前
Spring Boot、Spring MVC和Spring间的区别
spring boot