Spring 框架简介
Spring 是目前 Java 生态中最重要、最流行的企业级应用开发框架,几乎成为了“现代 Java 开发的事实标准”。它由 Rod Johnson 于2003年创立,如今由 VMware(现 Broadcom)旗下的 Spring 团队维护。
核心思想
Spring 的核心理念只有两个字:简化
它要解决的是 Java EE(现在叫 Jakarta EE)原本过于笨重、配置繁琐、侵入性强的问题。
Spring 的两大核心机制:
- IoC(Inversion of Control,控制反转)
也叫 DI(Dependency Injection,依赖注入)——由容器帮你管理对象的创建和装配,而不是自己在代码里 new。 - AOP(Aspect Oriented Programming,面向切面编程)
把日志、事务、权限等横切关注点从业务代码中抽离出来。
Spring 框架主要模块(Spring 6.x / Spring Boot 3.x 时代)
| 模块 | 功能说明 |
|---|---|
| Spring Core Container | BeanFactory、ApplicationContext,提供 IoC 和 DI 的核心实现 |
| Spring AOP | 面向切面编程,与 AspectJ 集成 |
| Spring DAO / Spring JDBC | JDBC 抽象和异常体系简化数据库操作 |
| Spring ORM | 集成 Hibernate、MyBatis、JPA 等 |
| Spring Transaction | 声明式事务管理(最常用) |
| Spring MVC / Spring WebFlux | 传统 Servlet 栈的 MVC 框架 & 响应式编程(基于 Project Reactor) |
| Spring Security | 认证和授权安全框架(企业级标配) |
| Spring Data | 一站式数据访问抽象(JPA、MongoDB、Redis、Elasticsearch 等都支持) |
| Spring Batch | 批量处理框架 |
| Spring Integration | 企业集成模式(EIP)实现 |
| Spring Cloud | 微服务全家桶(注册中心、配置中心、网关、熔断等) |
| Spring Boot | 不是新模块,而是“约定大于配置”的自动化配置框架,真正让 Spring 火遍全球 |
Spring Boot —— 真正让 Spring 起飞的产品
2014 年发布的 Spring Boot 彻底改变了 Java 开发方式:
- 零 XML 配置(以前 Spring 配置几百行 XML 是家常便饭)
- 内嵌 Tomcat/Jetty/Undertow,无需部署 war 包
- 自动配置(starter 依赖一加,很多东西就自动好了)
- 生产就绪特性(健康检查、指标、外部化配置)
常用 starter 示例:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
当前最新版本(2025年12月)
- Spring Framework 6.2(2022年11月发布)
- 基线要求:Java 17+,Jakarta EE 9+
- 支持原生镜像(GraalVM Native Image)大幅提升启动速度和内存占用
- 全面拥抱响应式编程
- Spring Boot 3.3.x(2024年底~2025年持续更新)
- 支持 Java 21/23 虚拟线程
- Docker 和 Testcontainers 支持更完善
- Observability(指标、链路追踪)大幅增强
为什么几乎所有 Java 后端岗位都要求 Spring?
- 国内 90% 以上的 Java 企业项目都在用 Spring Boot
- 生态极其完善,几乎所有中间件都有官方或社区的 starter
- 学习曲线虽然陡峭,但一旦掌握就“通吃”大部分企业开发场景
- 社区活跃、文档优秀、更新速度快(每年大版本迭代)
简单示例:一个最小的 Spring Boot 应用
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@RestController
class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}
几行代码就启动了一个 Web 服务,这在传统 Spring 时代是不可想象的。
总结一句话:
如果你要做 Java 后端开发,学不会 Spring Boot 基本等于不会写现代 Java 企业应用。
有具体想深入了解的模块(比如 Spring MVC、Spring Data JPA、Spring Security、Spring Cloud)可以继续问我!