Spring Framework 是一个开源的 Java 应用程序框架,为构建企业级应用提供了全面的基础设施支持。它最初由 Rod Johnson 创建,旨在简化 Java EE 开发。
核心设计理念:
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 |
| 特性 | Spring Framework | Spring Boot |
|---|---|---|
| 配置 | 繁琐的 XML/Java 配置 | 自动配置,约定优于配置 |
| 部署 | 需要外置 Tomcat | 内嵌 Tomcat,直接运行 |
| 依赖 | 手动管理版本冲突 | Starter 依赖管理,自动版本管理 |
| 开发效率 | 较低,配置繁琐 | 极高,快速启动 |
| 监控 | 需要手动集成 | 内置 Actuator 监控端点 |
| 定位 | 基础框架 | 基于 Spring 的开发框架 |
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();
}
}