Spring Boot – Starters

Before Spring Boot was introduced, Spring Developers used to spend a lot of time on Dependency management. Spring Boot Starters were introduced to solve this problem so that the developers can spend more time on actual code than Dependencies. Spring Boot Starters are dependency descriptors that can be added under the section in pom.xml. There are around 50+ Spring Boot Starters for different Spring and related technologies. These starters give all the dependencies under a single name. For example, if you want to use Spring Data JPA for database access, you can include spring-boot-starter-data-jpa dependency. The advantages of using Starters are as follows:Increase productivity by decreasing the Configuration time for developers.Managing the POM is easier since the number of dependencies to be added is decreased.Tested, Production-ready, and supported dependency configurations.No need to remember the name and version of the dependencies.Spring Boot Starter Data JPA is illustrated below: 


This gives all the required dependencies and can be seen under the Maven tab in IntelliJ IDEA. In earlier days, developers used to include all those dependencies. Now Spring Boot Starters provides all those with just a single dependency. The official starters follow a naming convention spring-boot-starter-*, where * denotes application type. For example, if we want to build web including RESTful applications using Spring MVC we have to use spring-boot-starter-web dependency.Third-Party StartersIf you want to make your own starter or other third-party starters name should not start with spring-boot as it reserved for official Spring Boot Starters. It can start with the name of the project. For example, if the name of the project is gfg-code-template, then the name of the starter can be gfg-code-template-spring-boot-starter. Here out we will be discussing all 3 starters and the following starters are provided by the Spring Boot under org.springframework.boot group. They are namely and covered as follows:Application StartersProduction StartersTechnical Starters Let us elaborate these starters in the same sequential order which is as follows:(A) Spring Boot Application StartersName Descriptionspring-boot-starterCore starter, including auto-configuration support, logging, and YAMLspring-boot-starter-activemqStarter for JMS messaging using Apache ActiveMQspring-boot-starter-amqpStarter for using Spring AMQP and Rabbit MQspring-boot-starter-aopStarter for aspect-oriented programming with Spring AOP and AspectJspring-boot-starter-artemisStarter for JMS messaging using Apache Artemisspring-boot-starter-batchStarter for using Spring Batchspring-boot-starter-cacheStarter for using Spring Framework’s caching supportspring-boot-starter-data-cassandraStarter for using Cassandra distributed database and Spring Data Cassandraspring-boot-starter-data-cassandra-reactiveStarter for using Cassandra distributed database and Spring Data Cassandra Reactivespring-boot-starter-data-couchbaseStarter for using Couchbase document-oriented database and Spring Data Couchbasespring-boot-starter-data-couchbase-reactiveStarter for using Couchbase document-oriented database and Spring Data Couchbase Reactivespring-boot-starter-data-elasticsearchStarter for using Elasticsearch search and analytics engine and Spring Data Elasticsearchspring-boot-starter-data-jdbcStarter for using Spring Data JDBCspring-boot-starter-data-jpaStarter for using Spring Data JPA with Hibernatespring-boot-starter-data-ldapStarter for using Spring Data LDAPspring-boot-starter-data-mongodbStarter for using MongoDB document-oriented database and Spring Data MongoDBspring-boot-starter-data-mongodb-reactiveStarter for using MongoDB document-oriented database and Spring Data MongoDB Reactivespring-boot-starter-data-neo4jStarter for using Neo4j graph database and Spring Data Neo4jspring-boot-starter-data-r2dbcStarter for using Spring Data R2DBCspring-boot-starter-data-redisStarter for using Redis key-value data store with Spring Data Redis and the Lettuce clientspring-boot-starter-data-redis-reactiveStarter for using Redis key-value data store with Spring Data Redis reactive and the Lettuce clientspring-boot-starter-data-restStarter for exposing Spring Data repositories over REST using Spring Data RESTspring-boot-starter-freemarkerStarter for building MVC web applications using FreeMarker viewsspring-boot-starter-groovy-templatesStarter for building MVC web applications using Groovy Templates viewsspring-boot-starter-hateoasStarter for building hypermedia-based RESTful web application with Spring MVC and Spring HATEOASspring-boot-starter-integrationStarter for using Spring Integrationspring-boot-starter-jdbcStarter for using JDBC with the HikariCP connection poolspring-boot-starter-jerseyStarter for building RESTful web applications using JAX-RS and Jersey. An alternative to spring-boot-starter-webspring-boot-starter-jooqStarter for using jOOQ to access SQL databases. An alternative to spring-boot-starter-data-jpa or spring-boot-starter-jdbcspring-boot-starter-jsonStarter for reading and writing jsonspring-boot-starter-jta-atomikosStarter for JTA transactions using Atomikosspring-boot-starter-mailStarter for using Java Mail and Spring Framework’s email sending supportspring-boot-starter-mustacheStarter for building web applications using Mustache viewsspring-boot-starter-oauth2-clientStarter for using Spring Security’s OAuth2/OpenID Connect client featuresspring-boot-starter-oauth2-resource-serverStarter for using Spring Security’s OAuth2 resource server featuresspring-boot-starter-quartzStarter for using the Quartz schedulerspring-boot-starter-rsocketStarter for building RSocket clients and serversspring-boot-starter-securityStarter for using Spring Securityspring-boot-starter-testStarter for testing Spring Boot applications with libraries including JUnit Jupiter, Hamcrest and Mockitospring-boot-starter-thymeleafStarter for building MVC web applications using Thymeleaf viewsspring-boot-starter-validationStarter for using Java Bean Validation with Hibernate Validatorspring-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 Servicesspring-boot-starter-webfluxStarter for building WebFlux applications using Spring Framework’s Reactive Web supportspring-boot-starter-websocketStarter for building WebSocket applications using Spring Framework’s WebSocket support(B) Spring Boot Production StartersNameDescriptionspring-boot-starter-actuatorStarter for using Spring Boot’s Actuator which provides production-ready features to help you monitor and manage your application(C) Spring Boot Technical StartersNameDescriptionspring-boot-starter-jettyStarter for using Jetty as the embedded servlet container. An alternative to spring-boot-starter-tomcatspring-boot-starter-log4j2Starter for using Log4j2 for logging. An alternative to spring-boot-starter-loggingspring-boot-starter-loggingStarter for logging using Logback. Default logging starterspring-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-webspring-boot-starter-undertowStarter for using Undertow as the embedded servlet container. An alternative to spring-boot-starter-tomcatAttention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.