Los starters son dependencias Maven/Gradle que agrupan todo lo necesario para una funcionalidad concreta. Al añadir un starter, Spring Boot detecta las clases en el classpath y aplica autoconfiguración por defecto.
<!-- Solo esto es necesario para una app web completa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>Spring Boot detecta que Tomcat está en el classpath → configura automáticamente el servidor embebido, Jackson para JSON, DispatcherServlet, etc.
Starters más comunes:
| Starter | Qué incluye |
|---|---|
starter-web |
Tomcat, Spring MVC, Jackson |
starter-data-jpa |
Hibernate, Spring Data JPA, pool de conexiones |
starter-security |
Spring Security con autenticación básica por defecto |
starter-test |
JUnit 5, Mockito, AssertJ, Spring Test |
starter-actuator |
Endpoints de monitoreo y salud |
starter-validation |
Hibernate Validator (Bean Validation) |
@SpringBootApplication = 3 anotaciones en una:
@SpringBootApplication
// equivale a:
@Configuration // clase de configuración Spring
@EnableAutoConfiguration // activa la autoconfiguración
@ComponentScan // escanea beans en el paquete y subpaquetesCondicional de autoconfiguración:
Spring Boot usa @Conditional para activar configuración solo cuando se cumplen condiciones:
@ConditionalOnClass(DataSource.class)— si la clase está en el classpath@ConditionalOnMissingBean(DataSource.class)— si no hay un bean ya definido@ConditionalOnProperty("app.feature.enabled")— si la propiedad está activa
- Zero configuration para el 80% de casos comunes.
- Convención sobre configuración: funciona por defecto, personalizable cuando necesario.
@ConditionalOnMissingBean: define tu propio bean para sobrescribir el por defecto.spring-boot-actuatorpara observabilidad con mínima configuración.
Ver ExpAutoConfig.java, ExpConditionalOnMissing.java, ExpStarterComposition.java y ExpSpringFactories.java para ejemplos ejecutables con autoconfiguración, starters y condiciones @Conditional.