Spring 是 Java 生態中開源的輕量級企業級應用開發框架,由 Rod Johnson 於 2003 年提出,核心目標是簡化 Java 開發、解耦組件依賴、提升代碼可維護性與擴展性。它不僅是一套框架,更是一種 “約定優於配置” 的開發思想,現已發展為包含 Spring Core、Spring Boot、Spring Cloud 等子項目的龐大生態體系,以下從核心模塊、核心特性、生態體系等維度詳解:
一、Spring 核心模塊(Spring Framework 核心)
- Spring Core:提供 IoC(控制反轉)容器的核心實現,通過 BeanFactory 管理 Bean 的創建、依賴注入與生命週期;
- Spring Context:基於 Core 擴展,提供國際化、資源加載、事件傳播、Bean 生命週期管理等功能,ApplicationContext 是其核心接口;
- Spring Beans:定義 Bean 的創建、配置、管理規則,是 IoC 容器操作的基礎;
- Spring Expression Language(SpEL):支持在配置或代碼中通過表達式動態訪問對象屬性、調用方法、執行運算。
- Spring JDBC:簡化 JDBC 操作,通過 JdbcTemplate 避免重複的 try-catch 和資源管理;
- Spring ORM:集成 Hibernate、MyBatis、JPA 等 ORM 框架,提供統一的操作接口;
- Spring Transaction:支持聲明式事務(通過
@Transactional註解)和編程式事務,底層可適配 JDBC、JTA 等事務管理器。
- Spring Web MVC:基於 MVC 設計模式的 Web 框架,通過 DispatcherServlet 分發請求,支持註解驅動(
@Controller、@RequestMapping)、視圖解析、數據綁定; - Spring WebFlux:基於響應式編程模型的 Web 框架,支持非阻塞 I/O,適配高併發場景,與 Reactor、RxJava 等響應式庫兼容。
二、Spring 核心特性
- IoC:將對象的創建權從代碼中轉移到 Spring 容器,由容器管理對象生命週期和依賴關係,而非手動
new對象; - DI:IoC 的具體實現方式,容器在創建 Bean 時自動將其依賴的 Bean 注入(如構造器注入、Setter 注入、字段注入),徹底解耦組件。示例:通過
@Autowired註解自動注入依賴 Bean,無需手動創建。
三、Spring 生態體系
- 自動配置:根據依賴自動配置 Bean(如引入 spring-boot-starter-web 自動配置 MVC 環境);
- 起步依賴:將常用依賴打包為 starter(如 spring-boot-starter-jdbc),簡化 pom.xml 配置;
- 嵌入式容器:內置 Tomcat/Jetty/Undertow,無需手動部署;
- Actuator:提供應用監控(健康檢查、指標統計)。
四、Spring 的應用場景
- 企業級應用開發:通過 IoC/DI 解耦業務組件,AOP 統一處理橫切邏輯,適合大型電商、金融、政務系統;
- Web 開發:Spring MVC 或 Spring WebFlux 構建 RESTful API、後端服務;
- 微服務架構:基於 Spring Boot+Spring Cloud 實現服務拆分與治理;
- 數據處理:整合 ORM 框架或 NoSQL 數據庫實現高效數據訪問。
五、Spring 的優勢與價值
- 簡化開發:IoC 容器減少樣板代碼,自動配置降低配置複雜度;
- 解耦與複用:AOP 分離橫切邏輯,DI 解耦組件依賴;
- 穩定性與擴展性:成熟的生態與社區支持,版本迭代兼容;
- 適配性強:支持從單體應用到微服務、從同步到響應式編程的多種架構模式。