Spring BootSpring Boot Basicsbeginner
Updated:

What is Spring Boot?

6 min read

Spring Boot is the Spring Framework with the setup pain removed — auto-configuration, starter dependencies and an embedded server. Here is what it does and why teams adopted it.

TL;DR – Quick Answer

Spring Boot is a framework built on top of the Spring Framework that removes almost all of Spring's manual setup. It auto-configures your application based on the libraries on the classpath, bundles starter dependencies so you add one line instead of ten, and ships an embedded server so a web app runs as a plain executable jar. You still get the full Spring container underneath; Boot just makes it fast to start and easy to run.

On This Page

Ask any Java developer who worked with Spring before 2014 what changed their day-to-day, and the answer is Spring Boot. The framework did not add new superpowers to Spring — it removed the setup tax that made starting a Spring project a half-day chore. That is the whole pitch, and it is why Boot became the default.

This page explains what Spring Boot actually does: auto-configuration, starters and the embedded server, and how it sits on top of the Spring Framework rather than replacing it.

The problem: Spring was powerful but heavy to start

Classic Spring gave you a superb IoC container and a rich set of modules, but wiring them together meant a lot of manual configuration — XML files, a servlet container to install and deploy into, and careful version-matching of libraries. The capabilities were excellent; the on-ramp was steep.

Spring Boot keeps every one of those capabilities and attacks the on-ramp. It makes three opinionated moves: configure sensible defaults automatically, bundle dependencies into starters, and embed the server so there is nothing to install. The Spring Framework it builds on is described in what is the Spring Framework.

Move one: auto-configuration

The signature feature. Spring Boot looks at what libraries are on your classpath and configures the application accordingly, creating the beans a typical app would need without you writing them.

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication   // this one annotation triggers auto-configuration
public class ShopApplication {
    public static void main(String[] args) {
        SpringApplication.run(ShopApplication.class, args);
    }
}

@SpringBootApplication bundles three things: component scanning, configuration support, and @EnableAutoConfiguration. That last one is the magic — if a web library is present, Boot sets up an embedded server and Spring MVC; if a database driver is present, it wires a data source. You did not configure any of it, yet it is all there. The mechanics are covered in Spring Boot auto-configuration.

Crucially, auto-configuration is a default, not a cage. Define your own bean for something Boot would auto-configure, and yours wins. You get convenience without losing control.

Pro tip: When asked "what makes Spring Boot different from Spring?", lead with auto-configuration: "Boot inspects the classpath and configures beans automatically, so I add a dependency and the feature just works — but I can override any default." That one sentence captures the essence and the escape hatch interviewers want to hear about.

Move two: starter dependencies

Assembling the right libraries at compatible versions used to be a real chore. Starters collapse that into a single line.

<!-- One starter pulls in Spring MVC, JSON support and an embedded Tomcat -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

spring-boot-starter-web brings in everything needed to build web endpoints — Spring MVC, Jackson for JSON, validation, and an embedded Tomcat — all at versions guaranteed to work together. Need data access? Add spring-boot-starter-data-jpa. Security? spring-boot-starter-security. Each starter is a curated bundle, so you stop hand-picking and version-matching jars. The full picture is in Spring Boot starters.

Move three: the embedded server

In classic Spring you built a WAR file and deployed it into a Tomcat you installed and managed separately. Spring Boot embeds the server inside your application, so the app is a self-contained runnable jar.

# Build a single executable jar and run it — no external server needed
mvn clean package
java -jar target/shop-application-0.0.1-SNAPSHOT.jar

That command starts Tomcat inside the jar and your app is live on port 8080. This is the change that made Spring Boot the natural fit for containers and cloud deployment — "just a jar" is exactly what Docker and Kubernetes want. It also makes local development trivial: one command, no server setup.

How the pieces fit

Put the three moves together and you can see the shape of Boot:

Feature What it removes Result
Auto-configuration Manual bean/XML setup App configures itself from the classpath
Starters Hand-picking library versions One dependency per feature
Embedded server Installing and deploying to Tomcat App runs as a plain jar

None of this replaces Spring — the IoC container, dependency injection and beans are all still there, doing exactly what they do in inversion of control. Boot simply builds and configures that container for you. When people say "Spring Boot is opinionated", this is what they mean: it makes good default choices so you can start fast, and lets you override them when you need to.

Common mistake: Believing Spring Boot is a different framework you learn instead of Spring. It is not — it is a productivity layer over Spring. Skipping the core concepts and jumping straight to Boot leaves you unable to debug wiring errors, because those errors come from the Spring container underneath.

What you build with it

With those three moves, a working REST API is minutes of work rather than a morning of setup. You write a controller, run the jar, and hit an endpoint:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HealthController {
    @GetMapping("/health")
    public String health() {
        return "OK";
    }
}

No server to configure, no XML, no boilerplate — the endpoint is live the moment the app starts. The natural next step is building a real one, walked through in building a REST API with Spring Boot, after you have created your first app in your first Spring Boot application.

Convention over configuration

The philosophy underneath all three moves has a name: convention over configuration. Rather than make you specify every detail, Spring Boot assumes sensible defaults and only asks you to configure the things that differ from them. Your app listens on port 8080, looks for application.properties in src/main/resources, and scans components from your main class's package — none of which you had to declare.

This is a deliberate trade. You give up a little explicitness in exchange for a lot of speed, and you can always override a convention when your case is unusual. Want a different port? One line in application.properties. Want a bean configured differently from the auto-configured default? Define your own and it takes precedence. The defaults are a starting point, never a ceiling — which is exactly why the framework can be both fast for beginners and flexible for large teams.

What Spring Boot does not change

A frequent misunderstanding is that Spring Boot is a lighter or simpler alternative to Spring — a different framework with less power. It is the opposite: the full Spring Framework is right there, and Boot adds to it rather than trimming it. Everything you learn about the container, dependency injection, beans and scopes applies unchanged.

That is why the concepts matter more than the shortcuts. When an auto-configured bean is not what you want, you override it by defining your own — and to do that you must understand what a bean is. When two beans could satisfy one dependency, Boot's convenience does not save you; you disambiguate with the same @Qualifier and @Primary tools you would use in plain Spring. Boot removes typing, not understanding.

Actuator and the production extras

Beyond the three headline moves, Spring Boot ships production-grade features that plain Spring left to you. The most notable is Spring Boot Actuator, which adds ready-made endpoints for health checks, metrics and application info by adding one starter.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

With that on the classpath, hitting /actuator/health returns the application's health status as JSON — exactly what a load balancer or Kubernetes probe needs to know whether your service is alive. You configured nothing; the starter and auto-configuration did it. This "batteries included" posture — sensible defaults for the operational concerns every real app faces — is a big part of why teams standardised on Boot for anything they intend to deploy.

Why it matters for your career

Spring Boot is the backbone of Java backend hiring in India. Most job posts that mention Java also expect Spring Boot, and it is one of the highest-return skills a fresher can build for a backend or full stack role. In CodeBegun's Java Full Stack with AI program in Hyderabad, Spring Boot is where backend concepts turn into shippable APIs, precisely because Boot lets you focus on the logic instead of the plumbing.

The summary: Spring Boot is the Spring Framework with the friction removed. Auto-configuration sets up your beans, starters bundle your dependencies, and the embedded server turns your app into a runnable jar. Learn the core Spring ideas first from the Spring Boot learning hub, then let Boot make them fast.

Frequently Asked Questions

What is Spring Boot in simple terms?
Spring Boot is Spring with sensible defaults and no boilerplate setup. It looks at the libraries you added and configures the application for you, provides starter dependencies that bundle everything a feature needs, and embeds a web server so you run your app with a single command. It lets you build a working Spring application in minutes instead of hours.
What is the difference between Spring and Spring Boot?
The Spring Framework is the underlying container and modules; Spring Boot is a layer on top that auto-configures Spring and removes manual XML and setup. You are always using Spring when you use Boot. Spring gives the capabilities, Boot gives the convenience and a fast start.
What is auto-configuration in Spring Boot?
Auto-configuration is Spring Boot inspecting your classpath and automatically creating the beans a typical application would need. If it sees a web starter, it configures an embedded server and MVC; if it sees a database driver, it sets up a data source. You can override any of it with your own configuration.
What is a Spring Boot starter?
A starter is a curated dependency that pulls in everything needed for a feature with one line. For example spring-boot-starter-web brings in Spring MVC, JSON handling and an embedded Tomcat, all at compatible versions. Starters remove the pain of assembling and version-matching individual libraries.
Do I need to know Spring before learning Spring Boot?
You should understand the core ideas — inversion of control, dependency injection and beans — because Spring Boot is built on them. You do not need the old XML-heavy Spring. Learning the container concepts first makes Boot's auto-configuration feel logical rather than magical.

Want to Build Your Career in Java Full Stack with AI?

Join CodeBegun and train with working industry engineers — Explore the Program

Apply for Demo Class →
Siva Prasad Galaba
Founder, CodeBegun · Staff Engineer

Founder of CodeBegun. 15+ years building Java systems at companies like Crunchyroll. Teaches Java, Spring Boot and system design the way the industry actually works, and mentors students through projects, mock interviews and placement preparation.

Technically reviewed by CodeBegun Technical TeamLast reviewed 15 July 2026 LinkedIn
Chat with us