1. Spring Framework 概述

1.1 什么是 Spring Framework

Spring Framework 是一个开源的 Java 应用程序框架,为构建企业级应用提供了全面的基础设施支持。它最初由 Rod Johnson 创建,旨在简化 Java EE 开发。

核心设计理念:

1.2 Spring Framework 架构

graph TB
    A[Spring Framework] --> B[Core Container<br/>核心容器]
    A --> C[AOP & Aspects<br/>面向切面]
    A --> D[Messaging<br/>消息传递]
    A --> E[Data Access/Integration<br/>数据访问/集成]
    A --> F[Web<br/>Web 模块]
    A --> G[Test<br/>测试模块]

    B --> B1[Beans]
    B --> B2[Core]
    B --> B3[Context]
    B --> B4[SpEL]

    E --> E1[JDBC]
    E --> E2[ORM]
    E --> E3[OXM]
    E --> E4[JMS]
    E --> E5[Transactions]

    F --> F1[Servlet]
    F --> F2[Struts]
    F --> F3[Portlet]
    F --> F4[WebSocket]

    style B fill:#f96
    style E fill:#6f6
    style F fill:#69f

模块说明:

模块 说明 核心组件
Core Container 核心容器,提供 IoC 和 DI 支持 Beans、Core、Context、SpEL
AOP 面向切面编程 @Aspect、@Pointcut
Messaging 消息抽象 Message、MessageChannel
Data Access/Integration 数据访问和集成 JdbcTemplate、Transaction
Web Web 应用支持 DispatcherServlet、@Controller
Test 测试支持 @SpringBootTest、MockMvc

1.3 Spring Framework vs Spring Boot

特性 Spring Framework Spring Boot
配置 繁琐的 XML/Java 配置 自动配置,约定优于配置
部署 需要外置 Tomcat 内嵌 Tomcat,直接运行
依赖 手动管理版本冲突 Starter 依赖管理,自动版本管理
开发效率 较低,配置繁琐 极高,快速启动
监控 需要手动集成 内置 Actuator 监控端点
定位 基础框架 基于 Spring 的开发框架

2. IoC 控制反转

2.1 什么是 IoC

IoC(Inversion of Control,控制反转)是 Spring 的核心设计理念。它将对象的创建和依赖关系的管理权从代码中剥离,交给 IoC 容器来管理。

传统开发方式的问题:

// 传统方式:强耦合,依赖由程序自己管理
public class OrderService {
    private UserService userService;
    private ProductService productService;

    public OrderService() {
        // 直接创建依赖对象,紧耦合
        this.userService = new UserService();
        this.productService = new ProductService();
    }

    public void createOrder() {
        userService.validate();
        productService.checkStock();
    }
}