Spring Boot Fundamentals
Spring Boot is an application framework that assembles Spring libraries, configuration defaults, and an embedded runtime into a stand-alone Java application. It reduces setup work while keeping Spring's dependency-injection model available for customization.
itWeb development | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Spring Boot Fundamentals
Spring Boot is the part of the Spring world that turns a collection of very capable libraries into one application that can start, listen, and generally behave as though it has been given a job. Spring Framework still supplies the container and application services. Boot supplies conventions, dependency choices, and useful assembly. This is less a replacement than a competent stage manager with a clipboard.
The central contraption is the application context, Spring's runtime registry of managed objects called beans. A controller can depend on a service; the service can depend on a repository or remote client. Rather than each object building its own companions in a cupboard, the context creates and connects them. Constructor parameters make those required connections visible, which is practical when a test needs a controlled replacement.
Starters select capabilities without requiring a shopping expedition through every compatible library version. Those dependencies give auto-configuration something to inspect. Auto-configuration then checks conditions such as available classes, properties, and missing beans before providing a baseline. It is not guessing. It is conditional assembly, which explains why adding a dependency can sometimes rearrange the furniture. When the result is baffling, the conditions report is the map.
Configuration has a second small joke: the file on screen may not be in charge. Property files, imports, environment variables, system properties, and command-line arguments all contribute values, with higher-precedence sources able to override lower ones. Typed configuration groups related settings into one object. That makes the important question not “what is in this YAML file?” but “what value did the running application actually receive?”
For an HTTP application, the embedded server receives a request, filters and a controller handle transport work, a service coordinates behavior, and a repository or remote client crosses the boundary. Spring MVC fits conventional blocking paths. WebFlux fits a path that stays non-blocking through its dependencies; a reactive wrapper around blocking work is still blocking work, wearing a rather optimistic hat.
The next useful stop is the Intro for complete startup and request paths, then Slides for their relationships. Use the Cheatsheet when choosing a test scope, configuration source, or delivery form. The Reference tab leads into official details for auto-configuration, external configuration, testing, Actuator, and packaging. Read the Timeline for historical reasons conventions arrived, and Field Notes when the pleasant baseline meets an inconvenient production system.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://spring.io/projects/spring-boot/
Supports
- Spring Boot purpose, stand-alone applications, embedded servers, starters, auto-configuration, and production-ready features
- Official homepage and learning entry point
- https://github.com/spring-projects/spring-boot
Supports
- Spring Boot's relationship to the Spring platform
- Stand-alone executable JAR and traditional WAR deployment goals
- https://docs.spring.io/spring-boot/reference/using/index.html
Supports
- SpringApplication bootstrap, configuration classes, dependency injection, and application structure
- Official foundational study path
- https://docs.spring.io/spring-boot/reference/using/structuring-your-code.html
Supports
- Root-package placement, component scanning, and default-package warning
- `@SpringBootApplication` main-class arrangement
- https://docs.spring.io/spring-boot/reference/using/build-systems.html
Supports
- Starter dependencies and dependency management
- Maven and Gradle roles and official starter conventions
- https://docs.spring.io/spring-boot/reference/using/auto-configuration.html
Supports
- Classpath-driven conditional configuration
- Missing-bean backoff, exclusions, and the debug conditions report
- https://docs.spring.io/spring-boot/reference/features/external-config.html
Supports
- Property sources, precedence, files, imports, profiles, environment values, and command-line values
- Typed configuration properties and configuration trees
- https://docs.spring.io/spring-boot/reference/web/index.html
Supports
- Servlet and reactive web application choices
- Embedded server and graceful shutdown concepts
- https://docs.spring.io/spring-boot/reference/web/reactive.html
Supports
- Spring WebFlux application model and reactive server support
- Non-blocking stack considerations
- https://docs.spring.io/spring-boot/reference/data/index.html
Supports
- SQL and NoSQL integrations, data sources, repositories, and transaction infrastructure
- Official data-access study path
- https://docs.spring.io/spring-framework/reference/data-access/transaction.html
Supports
- Transaction boundaries and Spring transaction abstractions
- Limits of local transaction coordination
- https://docs.spring.io/spring-boot/reference/testing/index.html
Supports
- Spring Boot test support, full-context tests, slices, and test utilities
- Test scope and application-context behavior
- https://docs.spring.io/spring-boot/reference/testing/testcontainers.html
Supports
- Spring Boot integration with Testcontainers
- Container-managed real backing services in tests
- https://docs.spring.io/spring-boot/reference/actuator/index.html
Supports
- Production-ready health, metrics, auditing, and monitoring features
- Actuator as an operational module
- https://docs.spring.io/spring-boot/reference/actuator/endpoints.html
Supports
- Endpoint access and HTTP exposure controls
- Health exposure default, liveness, readiness, and shared-dependency tradeoffs
- https://docs.spring.io/spring-boot/reference/actuator/metrics.html
Supports
- Micrometer integration and application metrics
- https://docs.spring.io/spring-boot/reference/packaging/index.html
Supports
- Executable archives, container images, ahead-of-time processing, and native packaging path
- https://docs.spring.io/spring-boot/reference/packaging/container-images/index.html
Supports
- OCI image creation and efficient image layering
- Buildpack integration through build plugins
- https://docs.spring.io/spring-boot/reference/packaging/native-image/index.html
Supports
- GraalVM native image generation, closed-world analysis, and native executable tradeoffs
- https://github.com/sindresorhus/awesome
Supports
- Discovery path to the curated Awesome Java list
- https://github.com/akullpp/awesome-java
Supports
- Discovery of Testcontainers, WireMock, ArchUnit, OpenRewrite, and Jib as Java ecosystem projects
- https://java.testcontainers.org/modules/databases/jdbc/
Supports
- Disposable containerized databases for Java integration tests
- Learner destination and rationale for Testcontainers
- https://wiremock.org/docs/spring-boot/
Supports
- Declarative WireMock instances, injected properties, and Spring Boot test integration
- https://www.archunit.org/userguide/html/000_Index.html
Supports
- Automated checks for package, class, layer, dependency, and cycle rules
- https://docs.openrewrite.org/recipes/java/spring
Supports
- Recipes for upgrading and patching Spring applications
- https://github.com/GoogleContainerTools/jib
Supports
- Maven and Gradle container-image builds without a Docker daemon
- Layered reproducible Java images
- https://spring.io/blog/2013/08/06/spring-boot-simplifying-spring-for-everyone/
Supports
- First Spring Boot milestone announcement on 2013-08-06
- Initial stand-alone, opinionated Spring application goals
- https://spring.io/blog/2014/04/01/spring-boot-1-0-ga-released/
Supports
- Spring Boot 1.0 general availability on 2014-04-01
- https://spring.io/blog/2015/06/17/devtools-in-spring-boot-1-3/
Supports
- Spring Boot 1.3 DevTools automatic restart, development property defaults, and LiveReload
- https://spring.io/blog/2017/04/05/spring-boot-s-new-gradle-plugin/
Supports
- Spring Boot 2.0 Gradle plugin redesign and `bootJar` and `bootWar` tasks
- https://spring.io/blog/2018/03/01/spring-boot-2-0-goes-ga/
Supports
- Spring Boot 2.0 general availability on 2018-03-01
- Spring Framework 5 baseline for the major release
- https://spring.io/blog/2020/05/15/spring-boot-2-3-0-available-now/
Supports
- Spring Boot 2.3 buildpack image tasks, layered JARs, graceful shutdown, and availability probes
- https://spring.io/blog/2020/08/14/config-file-processing-in-spring-boot-2-4/
Supports
- Spring Boot 2.4 config data redesign, ordered documents, imports, profile changes, and config trees
- https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga/
Supports
- Spring Boot 3.0 general availability, Java 17 baseline, Jakarta EE 10, GraalVM support, and observability changes
- https://spring.io/blog/2023/11/23/spring-boot-3-2-0-available-now
Supports
- Spring Boot 3.2 virtual thread support, initial CRaC support, RestClient, and observability improvements
- https://quarkus.io/about/
Supports
- Quarkus as an open Java framework with Kubernetes resource generation and imperative and reactive models
- https://micronaut.io/
Supports
- Micronaut compile-time dependency injection and modular microservice and serverless positioning
- https://helidon.io/
Supports
- Helidon open-source Java microservice framework and MicroProfile support
- https://www.dropwizard.io/
Supports
- Dropwizard's focused REST service stack with configuration, metrics, logging, and operational tools
- https://spring.io/tools/
Supports
- Free open-source Spring tooling for Eclipse, Visual Studio Code, Cursor, and Theia
- Spring Boot navigation, completion, Initializr, and runtime Actuator information
- https://www.jetbrains.com/help/idea/intellij-idea-single-distribution.html
Supports
- IntelliJ IDEA free core and optional subscription capabilities
- Java and framework development tooling
- https://manuals.jrebel.com/jrebel/standalone/springboot.html
Supports
- JRebel JVM agent setup for executable JAR, Maven, and Gradle Spring Boot runs
- https://www.jhipster.tech/creating-an-app/
Supports
- JHipster generation of Spring Boot back ends and full application stacks
- https://enterprise.spring.io/
Supports
- Tanzu Spring enterprise patches, extended support, automated upgrades, and Spring Boot extensions
- https://spring.io/blog/2018/12/12/how-fast-is-spring/
Supports
- Operational tradeoffs of reducing Spring application startup work
- Measured relationship between enabled features, loaded classes, and startup work
