Setting up a Spring application requires extensive configuration: choosing a servlet container, configuring DispatcherServlet, setting up view resolvers, managing dependency versions, writing XML/Java config — all before writing any business code. This setup overhead delays development and varies across projects.
Spring Boot is an opinionated framework on top of Spring that eliminates boilerplate configuration through auto-configuration and starter dependencies. It embeds Tomcat/Jetty/Undertow, provides sensible defaults for all Spring modules, and enables production-ready features (metrics, health checks) with minimal effort.
- @SpringBootApplication: Combines @Configuration, @ComponentScan, @EnableAutoConfiguration
- Auto-configuration: Spring Boot detects libraries on the classpath and automatically configures beans — e.g., if H2 is on classpath, auto-configures a DataSource
- Starters: Curated dependency descriptors (
spring-boot-starter-webincludes Spring MVC + embedded Tomcat + Jackson) - Embedded server: Application runs as a standalone JAR with embedded Tomcat — no WAR deployment needed
- Externalized configuration: application.properties or application.yml with environment-specific profiles
- Actuator: Production endpoints for health, metrics, environment, loggers, thread dumps
- Opinionated defaults: Sensible configurations chosen automatically based on classpath contents
- Standalone JAR: Run with
java -jar app.jar— no external web server needed - Starters: ~50 curated dependency sets; one-liner in build file replaces pages of dependency management
- Actuator: Built-in production monitoring: health, metrics, environment, loggers
- Externalized config: Properties, YAML, environment variables, command-line arguments — with precedence order
- Spring Boot CLI: Groovy-based command-line tool for rapid prototyping (optional)
- Built from: Spring Framework — Spring Boot builds on and auto-configures Spring Framework
- Built from: Spring Boot Auto-Configuration — The auto-configuration mechanism drives Spring Boot
- Builds into: Spring Boot Actuator — Actuator provides production monitoring
- Builds into: Spring Boot REST API — REST APIs are a primary use case for Spring Boot
- Related: Spring MVC — Spring Boot auto-configures Spring MVC with embedded server
- Contrasts with: EJB-JAR File — EJB requires an application server; Spring Boot is self-contained
- Auto-configuration ignorance: Auto-configuration applies conditionally — if you define your own bean, Boot’s default backs off
- Fat JAR size: Spring Boot executable JARs include all dependencies — can be 20MB+; use Docker layers for efficient deployment
- DevTools:
spring-boot-devtoolsenables live reload but should NEVER be included in production builds - Context path: By default, server runs on root context; set
server.servlet.context-path=/myappin properties - Profile-specific config:
application-dev.propertiesoverridesapplication.propertieswhenspring.profiles.active=dev