Spring Boot Starters
A starter is a curated dependency descriptor, published as a single Maven or Gradle artifact, that transitively pulls in every library needed for a particular capability at compatible versions. Adding spring-boot-starter-web to your build file brings in Spring MVC, an embedded Tomcat server, and Jackson for JSON, so you get a working REST stack without hunting down and version-matching each library yourself.
Cricket analogy: Like buying a complete cricket kit bag containing bat, pads, gloves, and helmet as one purchase instead of sourcing each item from a different shop, spring-boot-starter-web bundles MVC, Tomcat, and Jackson as one dependency.
Commonly Used Starters
spring-boot-starter-web adds Spring MVC and an embedded Tomcat for building REST APIs and web applications. spring-boot-starter-data-jpa adds Hibernate and Spring Data JPA for relational persistence. spring-boot-starter-security adds Spring Security's authentication and authorization filters. spring-boot-starter-test adds JUnit 5, Mockito, and AssertJ for testing. Each starter has a narrow, well-defined job, and you compose an application by combining several of them.
Cricket analogy: Like a team fielding specialist roles — an opener, a spinner, a wicketkeeper — each with one clear job, spring-boot-starter-web, starter-data-jpa, and starter-security each handle one clear responsibility.
How Starters Avoid Version Conflicts
Starters themselves declare no version numbers for their transitive dependencies; instead, they rely on the versions defined by spring-boot-starter-parent's Bill of Materials (BOM), which Spring Boot's release team has tested together. This means adding spring-boot-starter-data-jpa and spring-boot-starter-web to the same project guarantees Hibernate, Spring Data, Spring MVC, and Jackson are all versions the Spring Boot team verified work together, eliminating a whole class of 'dependency hell' bugs.
Cricket analogy: Like an ICC-certified ball guaranteed to meet the same seam and weight spec at every venue worldwide, the BOM guarantees every starter's transitive dependency meets the same tested spec across the project.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>There is also a bare spring-boot-starter with no web, data, or security capability — it just brings in core auto-configuration, logging, and YAML support. Most starters, like spring-boot-starter-web, transitively depend on this core starter, so you rarely add it explicitly yourself.
- A starter is a single dependency that transitively pulls in every library needed for one capability at compatible versions.
- spring-boot-starter-web brings Spring MVC, embedded Tomcat, and Jackson for building REST APIs.
- spring-boot-starter-data-jpa brings Hibernate and Spring Data JPA for relational persistence.
- spring-boot-starter-security and spring-boot-starter-test are examples of starters focused on one narrow concern each.
- Starters rely on spring-boot-starter-parent's Bill of Materials rather than declaring their own dependency versions.
- The BOM guarantees that dependencies pulled in by different starters are versions tested to work together.
- The bare spring-boot-starter provides core auto-configuration, logging, and YAML support and underlies most other starters.
Practice what you learned
1. What is a Spring Boot starter?
2. Which libraries does spring-boot-starter-web bring in?
3. How do starters avoid dependency version conflicts?
4. What does spring-boot-starter-data-jpa provide?
5. What does the bare spring-boot-starter (with no suffix) provide?
Was this page helpful?
You May Also Like
What Is Spring Boot?
An introduction to Spring Boot as an opinionated, production-ready extension of the Spring Framework that removes boilerplate configuration.
Spring Boot Project Structure
How a typical Spring Boot project is organized on disk, from Maven/Gradle build files to source packages and resources.
Spring Boot Auto-Configuration
How Spring Boot inspects the classpath and existing beans to automatically configure sensible defaults, and how to customize or override them.
Related Reading
Related Study Notes in Web Development
Browse all study notesWebSockets Study Notes
Web Development · 30 topics
Web DevelopmentWebAssembly Study Notes
WebAssembly · 30 topics
Web DevelopmentgRPC Study Notes
Protocol Buffers · 30 topics
Web DevelopmentFlask Study Notes
Python · 30 topics
Web DevelopmentDjango Study Notes
Python · 30 topics
Web DevelopmentNext.js Study Notes
JavaScript · 30 topics