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
Intro
Spring Boot Fundamentals
Spring Boot is an opinionated way to build stand-alone, production-oriented applications with the Spring Framework. It combines dependency management, starter dependencies, auto-configuration, an application bootstrap process, packaging tools, and operational endpoints. The result is usually a Java archive that starts with java -jar and runs its own application context and web server.
Spring Boot does not replace the Spring Framework. Spring supplies the container, dependency injection, web frameworks, data access, transactions, security integration, and other application services. Spring Boot selects useful defaults and connects those services according to the libraries and configuration it finds.
The application startup path
A typical application has one class annotated with @SpringBootApplication. Its main method calls SpringApplication.run. That call creates and refreshes a Spring ApplicationContext, discovers application components, evaluates auto-configuration conditions, creates beans, and starts infrastructure such as an embedded web server.
main method
-> SpringApplication
-> ApplicationContext
-> component discovery and auto-configuration
-> bean creation
-> embedded server and application runners
-> ready application
@SpringBootApplication combines three roles. It marks a configuration class, enables auto-configuration, and enables component scanning from its package downward. Put the application class in a root package so scanning covers the application's code without scanning unrelated libraries.
The application context is the runtime registry of beans. A bean is an object managed by Spring. Controllers, services, repositories, configuration objects, and infrastructure clients can all be beans. Dependency injection supplies one bean to another instead of requiring each consumer to construct its dependencies.
Constructor injection makes a dependency visible in the class contract. It also makes a class easier to test because a test can supply a controlled implementation without starting the entire application.
Starters and dependency management
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
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
