The dominant Java framework.
WHAT IT PROVIDES
Dependency injection Auto-configuration based on what is present An embedded server Data access abstractions Security Health and metrics endpoints
WHAT AUTO-CONFIGURATION DOES
Configures components sensibly based on dependencies on the classpath.
WHY THAT MATTERS
It removes a large amount of configuration that Java frameworks historically required.
WHAT THE STRUCTURE IS
Controllers handling requests Services containing logic Repositories accessing data Entities representing records
WHAT DEPENDENCY INJECTION PROVIDES
Components supplied rather than constructed, making them replaceable and testable.
WHO IT SUITS
Large organisations Long-lived systems Teams valuing type safety and tooling
WHAT IT COSTS
Memory footprint Startup time Verbosity, though considerably less than historically
WHAT TO BE CAREFUL WITH
Configuration spread across properties, annotations and code Very large service classes Data access producing unexpected queries
WHAT TO MONITOR
Query counts, memory, and startup behaviour.
WHAT TO ESTABLISH
Whether the operational footprint suits your hosting.