# spring-projects/spring-framework architecture

> Architecture diagram of the GitHub repository spring-projects/spring-framework, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/spring-projects/spring-framework
- Repository: https://github.com/spring-projects/spring-framework

## Overview

Spring Framework is a Java foundation for enterprise applications, spanning core utilities, data conversion, transaction management, and web/messaging capabilities. A typical use starts when an application invokes framework services; selected modules then perform conversion, transaction coordination, or request handling. The excerpts show conversion lookup, transaction lifecycle management, and WebSocket/SockJS behavior, while the tree indicates broader integration modules. Unsampled product branches are retained at directory level; their internal links are omitted where the supplied evidence does not establish them.

Main entry points: [`spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java`](https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java) (Transaction coordinator), [`spring-core/src/main/java/org/springframework/core/convert/ConversionService.java`](https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/ConversionService.java) (Conversion API), [`spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java`](https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java) (Converter registry), [`spring-webflux/src/main/java`](https://github.com/spring-projects/spring-framework/tree/main/spring-webflux/src/main/java) (Reactive web)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Core services"]
  node_coreutils["Core utilities"]
  node_property["Property metadata<br/>[Property.java]"]
  node_typedesc["Type descriptors"]
  node_conversionapi["Conversion API"]
  node_conversion["Converter registry"]
  node_formatting["Formatting service"]
end

subgraph group_transactions["Transactions"]
  node_txdefinition["Transaction rules"]
  node_txmanager["Transaction coordinator"]
  node_txstatus["Transaction status"]
  node_txsync["Transaction synchronization"]
  node_resourcetx["Resource transactions"]
end

subgraph group_web["Web and messaging"]
  node_webmvc["Servlet web"]
  node_webflux["Reactive web"]
  node_websocket["WebSocket handshake"]
  node_sockjs["SockJS transports"]
  node_messaging["Message handling"]
end

subgraph group_integrations["Enterprise integrations"]
  node_txadapters["JDBC and ORM transactions"]
  node_jms["JMS messaging<br/>[JmsClient.java]"]
  node_cache["Cache integrations"]
  node_orm["ORM integrations"]
  node_r2dbc["Reactive database"]
end

node_app(("Application"))

node_app -->|"requests conversion"| node_conversionapi
node_conversionapi -->|"delegates conversion"| node_conversion
node_conversion -->|"matches types"| node_typedesc
node_formatting -->|"extends service"| node_conversionapi
node_app -.->|"manages transaction"| node_txmanager
node_txmanager -->|"checks rules"| node_txdefinition
node_txmanager -->|"creates status"| node_txstatus
node_txmanager -->|"registers synchronization"| node_txsync
node_txadapters -.->|"specializes manager"| node_txmanager
node_app -.->|"uses web endpoints"| node_webmvc
node_app -.->|"uses reactive endpoints"| node_webflux
node_websocket -->|"uses handler types"| node_webflux
node_app -.->|"uses fallback transports"| node_sockjs
node_app -.->|"uses message handling"| node_messaging
node_app -.->|"uses messaging client"| node_jms
node_app -.->|"uses cache services"| node_cache
node_app -.->|"uses ORM services"| node_orm
node_app -.->|"uses reactive data"| node_r2dbc

click node_coreutils "https://github.com/spring-projects/spring-framework/tree/main/spring-core/src/main/java/org/springframework/util"
click node_property "https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/Property.java"
click node_typedesc "https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java"
click node_conversionapi "https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/ConversionService.java"
click node_conversion "https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java"
click node_formatting "https://github.com/spring-projects/spring-framework/blob/main/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java"
click node_txdefinition "https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/TransactionDefinition.java"
click node_txmanager "https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java"
click node_txstatus "https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/DefaultTransactionStatus.java"
click node_txsync "https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java"
click node_resourcetx "https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/ResourceTransactionManager.java"
click node_txadapters "https://github.com/spring-projects/spring-framework/blob/main/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/DataSourceTransactionManager.java"
click node_jms "https://github.com/spring-projects/spring-framework/blob/main/spring-jms/src/main/java/org/springframework/jms/core/JmsClient.java"
click node_webmvc "https://github.com/spring-projects/spring-framework/tree/main/spring-webmvc/src/main/java"
click node_webflux "https://github.com/spring-projects/spring-framework/tree/main/spring-webflux/src/main/java"
click node_websocket "https://github.com/spring-projects/spring-framework/blob/main/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/support/HandshakeWebSocketService.java"
click node_sockjs "https://github.com/spring-projects/spring-framework/blob/main/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java"
click node_messaging "https://github.com/spring-projects/spring-framework/tree/main/spring-messaging/src/main/java"
click node_cache "https://github.com/spring-projects/spring-framework/tree/main/spring-context-support/src/main/java/org/springframework/cache"
click node_orm "https://github.com/spring-projects/spring-framework/tree/main/spring-orm/src/main/java"
click node_r2dbc "https://github.com/spring-projects/spring-framework/tree/main/spring-r2dbc/src/main/java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_coreutils,node_property,node_typedesc,node_conversionapi,node_conversion,node_formatting toneBlue
class node_txdefinition,node_txmanager,node_txstatus,node_txsync,node_resourcetx toneAmber
class node_webmvc,node_webflux,node_websocket,node_sockjs,node_messaging toneMint
class node_txadapters,node_jms,node_cache,node_orm,node_r2dbc toneRose
class node_app toneIndigo
```

## Components

### Core services

- [Core utilities](https://github.com/spring-projects/spring-framework/tree/main/spring-core/src/main/java/org/springframework/util): `spring-core/src/main/java/org/springframework/util`
- [Property metadata](https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/Property.java): `spring-core/src/main/java/org/springframework/core/convert/Property.java`
- [Type descriptors](https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java): `spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java`
- [Conversion API](https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/ConversionService.java): `spring-core/src/main/java/org/springframework/core/convert/ConversionService.java`
- [Converter registry](https://github.com/spring-projects/spring-framework/blob/main/spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java): `spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java`
- [Formatting service](https://github.com/spring-projects/spring-framework/blob/main/spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java): `spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java`

### Transactions

- [Transaction rules](https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/TransactionDefinition.java): `spring-tx/src/main/java/org/springframework/transaction/TransactionDefinition.java`
- [Transaction coordinator](https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java): `spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java`
- [Transaction status](https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/DefaultTransactionStatus.java): `spring-tx/src/main/java/org/springframework/transaction/support/DefaultTransactionStatus.java`
- [Transaction synchronization](https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java): `spring-tx/src/main/java/org/springframework/transaction/support/TransactionSynchronizationManager.java`
- [Resource transactions](https://github.com/spring-projects/spring-framework/blob/main/spring-tx/src/main/java/org/springframework/transaction/support/ResourceTransactionManager.java): `spring-tx/src/main/java/org/springframework/transaction/support/ResourceTransactionManager.java`

### Web and messaging

- [Servlet web](https://github.com/spring-projects/spring-framework/tree/main/spring-webmvc/src/main/java): `spring-webmvc/src/main/java`
- [Reactive web](https://github.com/spring-projects/spring-framework/tree/main/spring-webflux/src/main/java): `spring-webflux/src/main/java`
- [WebSocket handshake](https://github.com/spring-projects/spring-framework/blob/main/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/support/HandshakeWebSocketService.java): `spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/support/HandshakeWebSocketService.java`
- [SockJS transports](https://github.com/spring-projects/spring-framework/blob/main/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java): `spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java`
- [Message handling](https://github.com/spring-projects/spring-framework/tree/main/spring-messaging/src/main/java): `spring-messaging/src/main/java`

### Enterprise integrations

- [JDBC and ORM transactions](https://github.com/spring-projects/spring-framework/blob/main/spring-jdbc/src/main/java/org/springframework/jdbc/datasource/DataSourceTransactionManager.java): `spring-jdbc/src/main/java/org/springframework/jdbc/datasource/DataSourceTransactionManager.java`
- [JMS messaging](https://github.com/spring-projects/spring-framework/blob/main/spring-jms/src/main/java/org/springframework/jms/core/JmsClient.java): `spring-jms/src/main/java/org/springframework/jms/core/JmsClient.java`
- [Cache integrations](https://github.com/spring-projects/spring-framework/tree/main/spring-context-support/src/main/java/org/springframework/cache): `spring-context-support/src/main/java/org/springframework/cache`
- [ORM integrations](https://github.com/spring-projects/spring-framework/tree/main/spring-orm/src/main/java): `spring-orm/src/main/java`
- [Reactive database](https://github.com/spring-projects/spring-framework/tree/main/spring-r2dbc/src/main/java): `spring-r2dbc/src/main/java`

### Other components

- **Application**

## Connections

- Application → Conversion API: requests conversion (evidence: `spring-core/src/main/java/org/springframework/core/convert/ConversionService.java`)
- Conversion API → Converter registry: delegates conversion (evidence: `spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java`)
- Converter registry → Type descriptors: matches types (evidence: `spring-core/src/main/java/org/springframework/core/convert/support/GenericConversionService.java`)
- Formatting service → Conversion API: extends service (evidence: `spring-context/src/main/java/org/springframework/format/support/FormattingConversionService.java`)
- Application → Transaction coordinator: manages transaction
- Transaction coordinator → Transaction rules: checks rules (evidence: `spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java`)
- Transaction coordinator → Transaction status: creates status (evidence: `spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java`)
- Transaction coordinator → Transaction synchronization: registers synchronization (evidence: `spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java`)
- JDBC and ORM transactions → Transaction coordinator: specializes manager (evidence: `spring-jdbc/src/main/java/org/springframework/jdbc/datasource/DataSourceTransactionManager.java`)
- Application → Servlet web: uses web endpoints
- Application → Reactive web: uses reactive endpoints
- WebSocket handshake → Reactive web: uses handler types (evidence: `spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/support/HandshakeWebSocketService.java`)
- Application → SockJS transports: uses fallback transports
- Application → Message handling: uses message handling
- Application → JMS messaging: uses messaging client
- Application → Cache integrations: uses cache services
- Application → ORM integrations: uses ORM services
- Application → Reactive database: uses reactive data
