源本科技 | 码上会

构建 Spring Boot 项目

2026/03/17
18
0

版本兼容性检查

在动手之前,必须明确 Spring Boot 3 的硬性环境要求,这是项目能否成功运行的关键:

组件

Spring Boot 2.7 (旧)

Spring Boot 3.x (新)

JDK 版本

Java 8, 11, 17

Java 17, 21, 25+

Servlet 规范

Java EE / Jakarta EE 8

Jakarta EE 9+

Maven 版本

≥ 3.5.0

≥ 3.6.3 (推荐 3.8+)

IDEA 版本

2020+

2023.3+ (推荐 2025+)


在 IntelliJ IDEA 中创建项目

以下流程基于 IntelliJ IDEA 2025+ 版本,界面可能略有微调,但核心逻辑一致。

步骤 1:启动新建项目向导

打开 IntelliJ IDEA,在欢迎界面点击 New Project,或者在主界面菜单栏选择 File -> New -> Project

提示:在 IDEA 2025.3 及以后版本,社区版与旗舰版功能趋于统一,均内置了完整的 Spring Initializr 支持。

步骤 2:选择 Spring Initializr 模板

在新建项目窗口左侧列表中,选择 Spring Initializr

  • 注意:不要选择普通的 "Java" 或 "Maven" 模板,只有 Spring Initializr 才能自动拉取 Spring Boot 3 的元数据并配置好所有 Starters。

步骤 3:配置项目元数据

这是最关键的一步,需严格按照 Spring Boot 3 的要求进行配置:

  1. Name: 输入项目名称(例如 demo-service)。

  2. Location: 选择本地存储路径。

  3. Language: 选择 Java

  4. Type: 选择 Maven (企业主流) 或 Gradle (Kotlin 项目常用)。

  5. Group: 输入反域名(如 com.example)。

  6. Artifact: 输入 artifact ID(如 demo)。

  7. Package name: 默认与 Group 一致,可修改。

  8. Packaging: 选择 Jar (微服务标准)。

  9. Java: 下拉菜单中必须选择 1721 或更高版本。如果此处没有 17+ 选项,请检查 IDEA 设置的 JDK 路径是否正确

  10. Spring Boot: 选择 3.3.x3.4.x (当前最新稳定版)。切勿选择 2.7.x

  11. Server URL:

    • 默认:https://start.spring.io (官方源)

    • 推荐国内用户修改为https://start.aliyun.com (阿里云镜像,下载依赖速度极快,且同步支持 Spring Boot 3)。

配置完成后,点击 Next

步骤 4:选择依赖

在依赖选择界面,搜索并添加项目所需模块。Spring Boot 3 的依赖名称基本保持不变,但底层实现已切换至 Jakarta:

  • Web 开发: 搜索并添加 Spring Web (包含内嵌 Tomcat 和 Jakarta Servlet)。

  • 数据库访问: 搜索 Spring Data JPA 和驱动 ( 如 MySQL Driver)。

  • 校验框架: 搜索 Validation ( 注意:此时引入的是 jakarta.validation-api)。

  • 开发工具: 搜索 Lombok (简化代码) 和 Spring Boot DevTools (热部署)。

点击 Next 进入确认页。

步骤 5:完成创建与导入

确认所有信息无误后,点击 Finish

  • IDEA 将连接初始化器服务,下载项目骨架。

  • 右下角会显示 Maven/Gradle 正在导入依赖的进度条。

  • 等待索引构建完成:IDEA 会自动识别 Jakarta EE 包结构,并提供智能代码提示。

常见问题:如果卡在 "Downloading dependencies",请检查网络或确认 Server URL 是否已切换为阿里云镜像。

步骤 6:运行应用

  1. 在项目结构中找到 src/main/java 下的主启动类(通常命名为 DemoApplication.java)。

  2. 右键点击该类,选择 Run 'DemoApplication'

  3. 观察控制台日志:

    • 若看到 Tomcat started on port(s): 8080,且无报错,说明启动成功。

    • 验证点:检查日志中加载的包是否为 jakarta.servlet 而非 javax.servlet


代码与配置

1. 主启动类

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// @SpringBootApplication 在 SB3 中依然有效,但底层扫描的组件已适配 Jakarta
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        // 启动入口,SB3 支持更多启动参数和优雅停机配置
        SpringApplication.run(DemoApplication.class, args);
    }
}

关键点:虽然代码看起来没变,但如果你在此类中手动导入 Servlet 相关类,必须使用 jakarta.servlet.http.HttpServlet,否则编译报错。

2. 构建文件

Spring Boot 3 的 pom.xml 隐含了重要的版本约束:

<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.5</version> <!-- 必须是 3.x 版本 -->
        <relativePath/> 
    </parent>

    <properties>
        <java.version>17</java.version> <!-- 强制指定 JDK 版本 -->
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 内部传递依赖已自动替换为 jakarta.servlet-api -->
        </dependency>
    </dependencies>
</project>

3. 配置文件

application.yml

Spring Boot 3 推荐 YAML 格式,配置项更加结构化:

server:
  port: 8080
  # SB3 新增了对虚拟线程的支持配置 (需 JDK 21+)
  tomcat:
    threads:
      virtual: true 

spring:
  application:
    name: demo-service
  # 数据源配置示例
  datasource:
    url: jdbc:mysql://localhost:3306/demo_db
    driver-class-name: com.mysql.cj.jdbc.Driver