spring-projects/spring-framework
By the numbers
Data collected on 2026-04-30 from the main branch (commit 6a62be0992).
Size
The repository is dominated by Java, with a substantial Kotlin contribution and a small amount of Groovy and AspectJ.
| Language | Source files |
|---|---|
| Java | ~9,184 |
| Kotlin | ~390 |
| Groovy | ~17 |
| AspectJ | (in spring-aspects) |
xychart-beta horizontal
title "Source files by language"
x-axis ["Java", "Kotlin", "Groovy"]
y-axis "Files" 0 --> 10000
bar [9184, 390, 17]Source vs test files
| Category | Approximate count |
|---|---|
| Total Java files | ~9,184 |
Test classes (*Test.java, *Tests.java) |
~2,831 |
| Production Java files | ~6,353 |
The test-to-production ratio across the codebase is roughly 1 test class per 2.2 production classes.
Module size (Java files only)
| Module | Java files |
|---|---|
spring-test |
1,371 |
spring-context |
1,250 |
spring-web |
1,213 |
spring-core |
1,086 |
spring-webmvc |
590 |
spring-beans |
579 |
spring-webflux |
459 |
spring-messaging |
361 |
spring-jdbc |
353 |
spring-aop |
314 |
spring-websocket |
244 |
spring-tx |
227 |
framework-docs (snippets/tests) |
218 |
spring-expression |
195 |
spring-jms |
185 |
spring-context-support |
128 |
spring-orm |
123 |
spring-r2dbc |
94 |
spring-core-test |
64 |
spring-context-indexer |
45 |
spring-oxm |
43 |
spring-aspects |
40 |
integration-tests |
28 |
spring-instrument |
2 |
spring-test is the largest single module — much of its code is fixtures and sub-frameworks for testing other Spring modules.
Activity
Recent commit volume
- Commits in the last 90 days: ~515 (excluding merges from per-author count below)
- Commits in the last year: ~1,800+
xychart-beta horizontal
title "Top recent contributors (commits, last year)"
x-axis ["Sam Brannen", "Juergen Hoeller", "rstoyanchev", "Sébastien Deleuze", "Brian Clozel"]
y-axis "Commits" 0 --> 700
bar [585, 380, 261, 214, 192]The five most active recent contributors are also Spring Framework's long-standing committers; the project's active engineering is concentrated among a small core team plus regular community contributions.
Bot-attributed commits
The Spring Framework repository does not use Dependabot or factory-droid[bot]-style automated commit signers in its history. Bot-attributed commits as a percentage of recent history is effectively 0%. (Note: this only counts commits where a bot is the author or co-author. AI-assisted work performed by humans through inline tools leaves no trace in git history.)
Complexity
Largest modules by source size
The four largest modules (spring-test, spring-context, spring-web, spring-core) together account for roughly half of all Java files in the repository. They are the obvious candidates for further breakdown when reading the codebase top-down.
Multi-release JARs
Two modules ship as multi-release JARs (per their *.gradle files):
spring-core— Java 21 and 24 overrides- (Other modules use the standard single-release packaging)
This is invisible to users but means spring-core builds against three Java versions to expose JDK-version-specific optimisations.
Dependencies
The framework is conservative with external dependencies. It pulls in:
- Reactor (
projectreactor.io) for reactive support - Kotlin standard library (optional) where Kotlin extensions exist
- Jakarta EE APIs (Servlet, JMS, Persistence, Validation) — usually
optionalso applications choose the version - Logging facade (Apache Commons Logging via JCL-over-SLF4J in tests)
- Bytecode tooling (ASM, CGLIB, Objenesis) — shaded into
spring-coreso users don't see them - Micrometer for observation/metrics
A complete inventory is in reference/dependencies.
Test infrastructure
| Test type | Count (approx) |
|---|---|
Test classes ending in Test/Tests |
2,831 |
Modules with src/jmh/ benchmarks |
several (spring-core, spring-context, spring-web, …) |
The test stack is JUnit 5 + Mockito + AssertJ + MockK (for Kotlin). See how-to-contribute/testing.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.