本文档概述了 Spring Framework 仓库,涵盖了其架构、核心组件和构建系统。Spring Framework 是一个为现代基于 Java 的企业应用程序提供全面编程和配置模型的框架,在应用程序层面提供基础设施支持。
有关特定子系统的详细信息,请参阅
Spring Framework 仓库是一个多模块的 Gradle 项目,包含 20 多个实现框架不同方面的模块。代码库遵循分层架构,核心基础设施、Web 技术和支持性实用程序之间有明确的分离。
来源:build.gradle1-99 settings.gradle framework-platform/framework-platform.gradle1-153
Spring Framework 实现了分层架构,基础实用程序支持更高级别的应用程序服务。核心容器提供控制反转和依赖注入功能,而 Web 模块则在此基础上提供全面的 Web 应用程序支持。
来源:spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java95-130 spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java85-122 spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java57-82
Spring 依赖注入的核心实现在 DefaultListableBeanFactory 中,它扩展了 AbstractAutowireCapableBeanFactory,以提供完整的 Bean 生命周期管理,包括实例化、属性填充和销毁。
来源:spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java128-130 spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java121-122 spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java157-158
Spring 提供两种 Web 编程模型:传统的基于 Servlet 的 Spring MVC 和响应式 WebFlux 框架。两者共享通用的 HTTP 抽象,但使用不同的执行模型。
来源:spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClient.java82 spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClient.java73 spring-test/spring-test.gradle1-115
该项目使用 Gradle,并采用复杂的多模块构建配置。根目录下的 build.gradle 定义了通用配置,而各个模块则拥有扩展通用设置的独立构建文件。
| 组件 | 目的 | 关键文件 |
|---|---|---|
| 根构建 | 项目范围的配置和插件管理 | build.gradle, settings.gradle |
| 平台 BOM | 所有模块的依赖版本管理 | framework-platform/framework-platform.gradle |
| 模块构建 | 各模块配置 | spring-*/spring-*.gradle |
| 构建插件 | 用于 Spring 特定任务的自定义 Gradle 插件 | buildSrc/ 目录 |
| 包装器 | 用于一致构建环境的 Gradle 包装器 | gradle/wrapper/ |
该构建系统管理超过 150 个外部库的依赖关系,并协调所有 Spring Framework 模块的编译、测试和发布。
来源:build.gradle1-99 framework-platform/framework-platform.gradle9-151 gradle/wrapper/gradle-wrapper.properties1-8
Spring Framework 模块以依赖层次结构组织,这可以防止循环依赖,并允许更高级别的模块基于较低级别的基础设施构建。
这种依赖结构确保了
来源:spring-web/spring-web.gradle6-12 spring-webmvc/spring-webmvc.gradle6-12 spring-webflux/spring-webflux.gradle6-11 spring-test/spring-test.gradle5-16