Spring Boot starters are a bunch of convenient dependency descriptors that you can add to your Spring Boot application. Spring Boot provides several starters to make the application development easier and rapid. A starter is just a Gradle or Maven module with the sole purpose of supplying all the necessary dependencies to "get started" with specific functionality.

Basically, Spring Boot starters is a one-stop-shop for all the Spring and related technologies that you need to build a Spring application, without having to hunt through sample code and copy-paste tons of dependency descriptors. For example, if you want to use Spring Data JPA with Spring Boot to access MySQL database, just include spring-boot-starter-data-jpa starter dependency to your project. Similarly, if you want to get started with the Thymeleaf template engine with Spring Boot, just include spring-boot-starter-thymeleaf dependency.

Naming Convention: All the Spring Boot starters follow a similar naming convention: spring-boot-starter-*, where * represents a particular type of application. This naming pattern is intended to help when you need to quickly find a starter, especially in Maven.

List of Spring Boot Starters

There are three types of starter dependencies provided by Spring Boot under the org.springframework.boot group.

1. Application Starters

NameDescription
spring-boot-starterCore starter, including auto-configuration support, logging and YAML
spring-boot-starter-activemqStarter for JMS messaging using Apache ActiveMQ
spring-boot-starter-amqpStarter for using Spring AMQP and Rabbit MQ
spring-boot-starter-aopStarter for aspect-oriented programming with Spring AOP and AspectJ
spring-boot-starter-artemisStarter for JMS messaging using Apache Artemis
spring-boot-starter-batchStarter for using Spring Batch
spring-boot-starter-cacheStarter for using Spring Framework’s caching support
spring-boot-starter-cloud-connectorsStarter for using Spring Cloud Connectors which simplifies connecting to services in cloud platforms like Cloud Foundry and Heroku. Deprecated in favor of Java CFEnv
spring-boot-starter-data-cassandraStarter for using Cassandra distributed database and Spring Data Cassandra
spring-boot-starter-data-cassandra-reactiveStarter for using Cassandra distributed database and Spring Data Cassandra Reactive
spring-boot-starter-data-couchbaseStarter for using Couchbase document-oriented database and Spring Data Couchbase
spring-boot-starter-data-couchbase-reactiveStarter for using Couchbase document-oriented database and Spring Data Couchbase Reactive
spring-boot-starter-data-elasticsearchStarter for using Elasticsearch search and analytics engine and Spring Data Elasticsearch
spring-boot-starter-data-jdbcStarter for using Spring Data JDBC
spring-boot-starter-data-jpaStarter for using Spring Data JPA with Hibernate
spring-boot-starter-data-ldapStarter for using Spring Data LDAP
spring-boot-starter-data-mongodbStarter for using MongoDB document-oriented database and Spring Data MongoDB
spring-boot-starter-data-mongodb-reactiveStarter for using MongoDB document-oriented database and Spring Data MongoDB Reactive
spring-boot-starter-data-neo4jStarter for using Neo4j graph database and Spring Data Neo4j
spring-boot-starter-data-redisStarter for using Redis key-value data store with Spring Data Redis and the Lettuce client
spring-boot-starter-data-redis-reactiveStarter for using Redis key-value data store with Spring Data Redis reactive and the Lettuce client
spring-boot-starter-data-restStarter for exposing Spring Data repositories over REST using Spring Data REST
spring-boot-starter-data-solrStarter for using the Apache Solr search platform with Spring Data Solr
spring-boot-starter-freemarkerStarter for building MVC web applications using FreeMarker views
spring-boot-starter-groovy-templatesStarter for building MVC web applications using Groovy Templates views
spring-boot-starter-hateoasStarter for building hypermedia-based RESTful web application with Spring MVC and Spring HATEOAS
spring-boot-starter-integrationStarter for using Spring Integration
spring-boot-starter-jdbcStarter for using JDBC with the HikariCP connection pool
spring-boot-starter-jerseyStarter for building RESTful web applications using JAX-RS and Jersey. An alternative to spring-boot-starter-web
spring-boot-starter-jooqStarter for using jOOQ to access SQL databases. An alternative to spring-boot-starter-data-jpa or spring-boot-starter-jdbc
spring-boot-starter-jsonStarter for reading and writing JSON
spring-boot-starter-jta-atomikosStarter for JTA transactions using Atomikos
spring-boot-starter-jta-bitronixStarter for JTA transactions using Bitronix
spring-boot-starter-mailStarter for using Java Mail and Spring Framework’s email sending support
spring-boot-starter-mustacheStarter for building web applications using Mustache views
spring-boot-starter-oauth2-clientStarter for using Spring Security’s OAuth2/OpenID Connect client features
spring-boot-starter-oauth2-resource-serverStarter for using Spring Security’s OAuth2 resource server features
spring-boot-starter-quartzStarter for using the Quartz scheduler
spring-boot-starter-rsocketStarter for building RSocket clients and servers.
spring-boot-starter-securityStarter for using Spring Security
spring-boot-starter-testStarter for testing Spring Boot applications with libraries including JUnit, Hamcrest and Mockito
spring-boot-starter-thymeleafStarter for building MVC web applications using Thymeleaf views
spring-boot-starter-validationStarter for using Java Bean Validation with Hibernate Validator
spring-boot-starter-webStarter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container
spring-boot-starter-web-servicesStarter for using Spring Web Services
spring-boot-starter-webfluxStarter for building WebFlux applications using Spring Framework’s Reactive Web support
spring-boot-starter-websocketStarter for building WebSocket applications using Spring Framework’s WebSocket support

2. Production Starters

NameDescription
spring-boot-starter-actuatorStarter for using Spring Boot’s Actuator which provides production-ready features to help you monitor and manage your application

3. Technical Starters

NameDescription
spring-boot-starter-jettyStarter for using Jetty as the embedded servlet container. An alternative to spring-boot-starter-tomcat
spring-boot-starter-log4j2Starter for using Log4j2 for logging. An alternative to spring-boot-starter-logging
spring-boot-starter-loggingStarter for logging using Logback. Default logging starter
spring-boot-starter-reactor-nettyStarter for using Reactor Netty as the embedded reactive HTTP server.
spring-boot-starter-tomcatStarter for using Tomcat as the embedded servlet container. Default servlet container starter used by spring-boot-starter-web
spring-boot-starter-undertowStarter for using Undertow as the embedded servlet container. An alternative to spring-boot-starter-tomcat

3rd-party Spring Boot Starters

You can also include 3rd party starters in your project or even build your own starter. Typically a 3rd-party starter name starts with the name of the project followed by the -spring-boot-starter suffix. For example, a 3rd-party starter project called myproject artifact would be named as myproject-spring-boot-starter. This is because the spring-boot prefix is reserved for official Spring Boot artifacts.

You can find a complete list of 3rd-party starters on GitHub.

Using Spring Boot Starters

To use a certain starter in your Spring Boot application, all you need to do is just include the starter dependency to your build.gradle (for Gradle) or pom.xml (for Maven) file. This will make sure that all the required dependencies are automatically downloaded and added to the classpath.

Let us look at the following example that includes the spring-boot-starter-web dependencies to build.gradle file to build a RESTful web service in Spring Boot:

implementation 'org.springframework.boot:spring-boot-starter-web'

Here is how a simple RESTful controller looks like:

@RestController
public class GreetingController {

    @GetMapping("/hi/{name}")
    public String welcome(@PathVariable String name) {
        return "Welcome " + name + "👋";
    }
}

Conclusion

That's all folks. In this article, you looked at what are Spring Boot starters, how they help us keep dependency management simple and clean, and how to use them in a Spring Boot application.

Spring Boot offers three kinds of starter dependencies: application, production, and technical. You just need to add the required starter dependency to your dependencies list. The build tool (Maven or Gradle) will automatically download all required dependencies and add them to the classpath.

Furthermore, you can also build your own Spring Boot starter or use 3rd-party starters build by the community in your project.

✌️ Like this article? Follow @attacomsian on Twitter. You can also follow me on LinkedIn and DEV. Subscribe to RSS Feed.

👋 If you enjoy reading my articles and want to support me to continue creating free tutorials, ☕ Buy me a coffee (cost $5).