Spring Web 概览

Spring Web 在应用层的定位:IoC、MVC 请求处理与何时引入;不替代语言主线。

#type / concept #status / growing #tech / dev #resource / java

[!info] 关联笔记

Spring Web 概览

这个概念为什么出现

企业 Java Web 多数运行在 Spring 生态。它提供依赖注入、Web MVC、生态集成。但若跳过语言与 HTTP 底座,排障只能停在“注解魔法”。

[!abstract] 一句话理解 Spring Web 用 IoC 容器装配组件,用 DispatcherServlet/WebFlux 模型处理 HTTP;它是应用框架层,建立在 Java 类型、异常、并发与字节码机制之上。

最小可运行示例

场景:对照理解“控制器只是适配器”(伪代码形态)

// 概念示意:真实项目用 Spring 注解与 Boot 自动配置
public interface PlaceOrderUseCase {
    String place(String skuId, int qty);
}

public class OrderControllerAdapter {
    private final PlaceOrderUseCase useCase;
    public OrderControllerAdapter(PlaceOrderUseCase useCase) {
        this.useCase = useCase;
    }
    // @PostMapping("/orders") 在真实 Spring 中绑定
    public String place(String skuId, int qty) {
        return useCase.place(skuId, qty);
    }
    public static void main(String[] args) {
        PlaceOrderUseCase uc = (sku, q) -> "ok-" + sku + "-" + q;
        System.out.println(new OrderControllerAdapter(uc).place("S1", 1));
    }
}
javac OrderControllerAdapter.java && java OrderControllerAdapter

期望:

ok-S1-1

结合场景再看三个关注点

  1. 用例与 Web 适配分离
  2. DI 构造注入便于测试。
  3. 先懂 HTTP 语义再学注解映射

核心概念与准确模型

1. IoC/DI

2. Spring MVC 请求链路(简化)

DispatcherServlet → HandlerMapping → Controller → 返回值处理

3. Boot 的自动配置

约定与 starter 依赖,见 Spring Boot

4. WebMVC vs WebFlux

线程模型不同;默认多数业务 MVC + 虚拟线程/平台线程池。

边界情况与反直觉行为

  1. 过滤器/拦截器顺序。
  2. 事务代理自调用失效。
  3. 启动变慢与组件扫描范围。

常见误区

[!warning] 常见误区:不会 Java 只背 Spring 注解 类型擦除、代理、类加载、异常仍决定排障能力。

工程实践

  1. 控制器变薄。
  2. 配置与密钥外置。
  3. Actuator 健康与指标。
  4. 与标准库服务对照学习。

本节总结

  • Spring=应用框架层
  • DI + MVC 主线
  • 语言主线不可替代

自测题

  1. 为什么构造注入优于字段注入(测试角度)?
  2. Spring 与 JDK HttpServer 如何分工学习?
参考答案
  1. 可在测试中直接 new 并传入假依赖,不启动容器。
  2. 先 HttpServer 懂语义,再 Spring 学装配与生态。

延伸阅读与资料来源

资料类型支撑内容
Spring Web docs官方Web 栈
Spring Boot Reference官方Boot
创建于 2026/7/15 更新于 2026/7/15