下载工作台
Spring Boot Web 开发

Spring Boot 入门与项目结构

试读上半部分 · 解锁后可读全文

第 1 章 · Spring Boot 3 入门与项目结构

本章目标:理解 Spring Boot 3 约定优于配置理念;使用 Spring Initializr 创建虚构练习项目 shop-spring-demo;读懂 Maven 标准目录、@SpringBootApplication 启动类与 application.yml 配置;能用对照表说明 Spring Boot 与 shop-demo(Django) 在项目结构、启动方式、配置分层上的差异;完成最小可运行 Web 应用并访问健康检查端点。

学时建议:4~5 小时(含 1.5 小时跟练)

前置:完成 java-dev 全模块(JDK 17+、Maven、类与包、集合、异常处理);了解 HTTP 基本概念;学过 django-web ch01 更佳但非必须。


1.1 场景说明:为什么需要 shop-spring-demo?

你在 django-web 中用 shop-demo 搭建了 Python 电商后台。现在团队要在 Java 技术栈交付一套企业级 Web 后台,对外 API 规划域名为虚构的 https://api.example.com(教学占位,非真实生产地址),项目代号 shop-spring-demo

维度shop-demo(Django)shop-spring-demo(Spring Boot)
语言Python 3Java 17+ / 21 LTS
构建工具pip + requirements.txtMaven / Gradle
启动入口manage.py runserverShopSpringDemoApplication.main
配置settings.py + .envapplication.yml + profile
依赖注入较少显式 DIIoC 容器(ch02 详讲)
默认端口80008080
适合场景快速全栈后台企业 Java、微服务、与现有 Java 资产集成
说明:本章所有路径、域名、密钥均为教学虚构,不涉及任何真实公司仓库、内部配置或生产密钥。
学习路径(spring-boot-web)
  ch01 入门与结构  →  ch02 IoC/DI  →  ch03 MVC  →  ch04 Thymeleaf
       ↑ 你在这里
  前置:java-dev 全模块

1.2 Spring Boot 3 与 Spring Framework 关系

层次职责shop-spring-demo 中的体现
Spring FrameworkIoC、AOP、MVC、事务等核心由 Boot 自动装配,无需手写 XML
Spring Boot自动配置、内嵌 Tomcat、Starter@SpringBootApplication 一键启动
Spring Boot 3.x基线 Jakarta EE 9+javax.jakarta.与 Boot 2.x 包名不同,本章统一 3.x

为何选 Spring Boot 3:长期支持 JDK 17+、原生镜像(GraalVM)友好、与 Spring Security 6、Spring Data 3 对齐;新项目应直接选 3.x。

1.2.1 与 Django 哲学对照

对比项DjangoSpring Boot
设计哲学Batteries included、MTV约定优于配置、按需引入 Starter
项目生成django-admin startprojectInitializr / IDE 向导
热重载runserver 自动spring-boot-devtools(可选)
ORMDjango ORMSpring Data JPA(ch05)
模板Django TemplatesThymeleaf(ch04)
Admin内置 Admin需自建或第三方(本课程自建页面)

1.3 环境准备

1.3.1 JDK 与 Maven

java-dev 相同,确认版本:

java -version
# 应显示 17 或 21,例如 openjdk version "21.0.x"

mvn -version
# Apache Maven 3.9.x,Java version: 21

推荐 IDE:IntelliJ IDEA CommunityVS Code + Extension Pack for Java

1.3.2 目录规划

~/java-learn/
├── shop-spring-demo/     ← 本章新建
└── (其他 java-dev 练习)

勿与 Django 的 shopdemo Python 项目混在同一目录,避免工具链混淆。


1.4 使用 Spring Initializr 创建项目

访问 https://start.spring.io(官方生成器,教学环境可离线用 IDE 等价向导)。

1.4.1 生成参数建议

选项推荐值说明
ProjectMaven与 java-dev 一致
LanguageJava
Spring Boot3.4.x(稳定版)选 3.x 最新稳定
Groupcom.example.shop包名前缀
Artifactshop-spring-demo项目名
Nameshop-spring-demo
Package namecom.example.shop
PackagingJar可执行 fat jar
Java21(或 17)与本地 JDK 一致

1.4.2 依赖(Dependencies)

本章最小集合:

Starter作用
Spring WebSpring MVC、内嵌 Tomcat、REST
Spring Boot DevTools开发热重启(可选)
Lombok减少样板代码(可选,后续章节会用)

点击 Generate 下载 zip,解压到 ~/java-learn/shop-spring-demo

1.4.3 命令行等价(可选)

curl -G https://start.spring.io/starter.zip \
  -d type=maven-project \
  -d language=java \
  -d bootVersion=3.4.0 \
  -d baseDir=shop-spring-demo \
  -d groupId=com.example.shop \
  -d artifactId=shop-spring-demo \
  -d name=shop-spring-demo \
  -d packageName=com.example.shop \
  -d javaVersion=21 \
  -d dependencies=web,devtools,lombok \
  -o shop-spring-demo.zip

1.5 项目结构详解

解压后的标准 Maven 布局:

shop-spring-demo/
├── pom.xml
├── mvnw / mvnw.cmd          # Maven Wrapper
├── src/
│   ├── main/
│   │   ├── java/com/example/shop/
│   │   │   └── ShopSpringDemoApplication.java
│   │   └── resources/
│   │       ├── application.yml    ← 本章重点
│   │       ├── static/              ← CSS/JS/图片
│   │       └── templates/           ← Thymeleaf(ch04)
│   └── test/java/.../
└── target/                  ← 编译输出,勿提交 Git

1.5.1 与 shop-demo 目录对照

shop-demo(Django)shop-spring-demo职责
manage.pyShopSpringDemoApplication + mvnw程序入口
shopdemo/settings.pyapplication.yml全局配置
shopdemo/urls.py@RequestMapping / @GetMapping(ch03)路由
catalog/ Appcatalog 包(后续拆分)业务模块
templates/resources/templates/页面模板
static/resources/static/静态资源
requirements.txtpom.xml依赖声明

1.5.2 启动类

package com.example.shop;

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

@SpringBootApplication
public class ShopSpringDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(ShopSpringDemoApplication.class, args);
    }
}

@SpringBootApplication 是三个注解的组合:

  • @Configuration:当前类可作为配置源
  • @EnableAutoConfiguration:启用自动配置(classpath 上的 Starter)
  • @ComponentScan:扫描 com.example.shop 及子包下的 Bean

等价于 Django 的「加载 settings + 注册 App + 启动 WSGI」的合并入口。

1.5.3 pom.xml 核心片段

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.4.0</version>
</parent>

<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>

spring-boot-starter-parent 统一管理依赖版本,类似 Django 锁定 Django>=4.2,<5 的 BOM 思想。


1.6 application.yml 配置入门

1.6.1 最小配置

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。