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 application development effortless and rapid.
A starter is just a Gradle or Maven module that supplies all the necessary dependencies to start with specific functionality.
In other words, Spring Boot starters is a one-stop-shop for all the Spring and related technologies that you need to build a Spring application.
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 the 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
Spring Boot provides three types of starter dependencies under the org.springframework.boot
group.
1. Application Starters
Name | Description |
---|---|
spring-boot-starter |
Core starter, including auto-configuration support, logging and YAML |
spring-boot-starter-activemq |
Starter for JMS messaging using Apache ActiveMQ |
spring-boot-starter-amqp |
Starter for using Spring AMQP and Rabbit MQ |
spring-boot-starter-aop |
Starter for aspect-oriented programming with Spring AOP and AspectJ |
spring-boot-starter-artemis |
Starter for JMS messaging using Apache Artemis |
spring-boot-starter-batch |
Starter for using Spring Batch |
spring-boot-starter-cache |
Starter for using Spring Framework’s caching support |
spring-boot-starter-cloud-connectors |
Starter for using Spring Cloud Connectors that simplifies connecting to services in cloud platforms like Cloud Foundry and Heroku. Deprecated in favor of Java CFEnv |
spring-boot-starter-data-cassandra |
Starter for using Cassandra distributed database and Spring Data Cassandra |
spring-boot-starter-data-cassandra-reactive |
Starter for using Cassandra distributed database and Spring Data Cassandra Reactive |
spring-boot-starter-data-couchbase |
Starter for using Couchbase document-oriented database and Spring Data Couchbase |
spring-boot-starter-data-couchbase-reactive |
Starter for using Couchbase document-oriented database and Spring Data Couchbase Reactive |
spring-boot-starter-data-elasticsearch |
Starter for using Elasticsearch search and analytics engine and Spring Data Elasticsearch |
spring-boot-starter-data-jdbc |
Starter for using Spring Data JDBC |
spring-boot-starter-data-jpa |
Starter for using Spring Data JPA with Hibernate |
spring-boot-starter-data-ldap |
Starter for using Spring Data LDAP |
spring-boot-starter-data-mongodb |
Starter for using MongoDB document-oriented database and Spring Data MongoDB |
spring-boot-starter-data-mongodb-reactive |
Starter for using MongoDB document-oriented database and Spring Data MongoDB Reactive |
spring-boot-starter-data-neo4j |
Starter for using Neo4j graph database and Spring Data Neo4j |
spring-boot-starter-data-redis |
Starter for using Redis key-value data store with Spring Data Redis and the Lettuce client |
spring-boot-starter-data-redis-reactive |
Starter for using Redis key-value data store with Spring Data Redis reactive and the Lettuce client |
spring-boot-starter-data-rest |
Starter for exposing Spring Data repositories over REST using Spring Data REST |
spring-boot-starter-data-solr |
Starter for using the Apache Solr search platform with Spring Data Solr |
spring-boot-starter-freemarker |
Starter for building MVC web applications using FreeMarker views |
spring-boot-starter-groovy-templates |
Starter for building MVC web applications using Groovy Templates views |
spring-boot-starter-hateoas |
Starter for building hypermedia-based RESTful web application with Spring MVC and Spring HATEOAS |
spring-boot-starter-integration |
Starter for using Spring Integration |
spring-boot-starter-jdbc |
Starter for using JDBC with the HikariCP connection pool |
spring-boot-starter-jersey |
Starter for building RESTful web applications using JAX-RS and Jersey. An alternative to spring-boot-starter-web |
spring-boot-starter-jooq |
Starter for using jOOQ to access SQL databases. An alternative to spring-boot-starter-data-jpa or spring-boot-starter-jdbc |
spring-boot-starter-json |
Starter for reading and writing JSON |
spring-boot-starter-jta-atomikos |
Starter for JTA transactions using Atomikos |
spring-boot-starter-jta-bitronix |
Starter for JTA transactions using Bitronix |
spring-boot-starter-mail |
Starter for using Java Mail and Spring Framework’s email sending support |
spring-boot-starter-mustache |
Starter for building web applications using Mustache views |
spring-boot-starter-oauth2-client |
Starter for using Spring Security’s OAuth2/OpenID Connect client features |
spring-boot-starter-oauth2-resource-server |
Starter for using Spring Security’s OAuth2 resource server features |
spring-boot-starter-quartz |
Starter for using the Quartz scheduler |
spring-boot-starter-rsocket |
Starter for building RSocket clients and servers. |
spring-boot-starter-security |
Starter for using Spring Security |
spring-boot-starter-test |
Starter for testing Spring Boot applications with libraries including JUnit, Hamcrest, and Mockito |
spring-boot-starter-thymeleaf |
Starter for building MVC web applications using Thymeleaf views |
spring-boot-starter-validation |
Starter for using Java Bean Validation with Hibernate Validator |
spring-boot-starter-web |
Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container |
spring-boot-starter-web-services |
Starter for using Spring Web Services |
spring-boot-starter-webflux |
Starter for building WebFlux applications using Spring Framework’s Reactive Web support |
spring-boot-starter-websocket |
Starter for building WebSocket applications using Spring Framework’s WebSocket support |
2. Production Starters
Name | Description |
---|---|
spring-boot-starter-actuator |
Starter for using Spring Boot’s Actuator which provides production-ready features to help you monitor and manage your application |
3. Technical Starters
Name | Description |
---|---|
spring-boot-starter-jetty |
Starter for using Jetty as the embedded servlet container. An alternative to spring-boot-starter-tomcat |
spring-boot-starter-log4j2 |
Starter for using Log4j2 for logging. An alternative to spring-boot-starter-logging |
spring-boot-starter-logging |
Starter for logging using Logback. Default logging starter |
spring-boot-starter-reactor-netty |
Starter for using Reactor Netty as the embedded reactive HTTP server. |
spring-boot-starter-tomcat |
Starter for using Tomcat as the embedded servlet container. Default servlet container starter used by spring-boot-starter-web |
spring-boot-starter-undertow |
Starter 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 the project name followed by the -spring-boot-starter
suffix.
For example, a 3rd-party starter project called myproject
artifact would be named 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 specific starter in your Spring Boot application, include the starter dependency to your build.gradle
(for Gradle) or pom.xml
(for Maven) file.
It will automatically download all the required dependencies and add them to the classpath.
Let us look at the following example that includes the spring-boot-starter-web
dependencies to the build.gradle
file to build a RESTful web service in Spring Boot:
implementation 'org.springframework.boot:spring-boot-starter-web'
Here is what a simple RESTful controller looks like:
@RestController
public class GreetingController {
@GetMapping("/hi/{name}")
public String welcome(@PathVariable String name) {
return "Welcome " + name + "👋";
}
}
Conclusion
In this article, we 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 provides three groups 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 in your project.
✌️ Like this article? Follow me on Twitter and LinkedIn. You can also subscribe to RSS Feed.