Como crear el main class en Spring Boot

Para crear una aplicación web en Spring Boot necesitamos primero determinar las librerías mínimas y luego crear el main java de la aplicación para arrancar el servicio. Veremos aquí como crear el main de Spring Boot para que se inicie.

La dependencia mínima que necesita Spring Boot para arrancar

Para esta aplicación usaremos la dependencia spring-boot-starter-web que nos provee todo el paquete de librerías para una aplicación que de respuestas ante peticiones web.

dependencies{
   implementation 'org.springframework.boot:spring-boot-starter-web'
   testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

En este otro post hablamos sobre estas dependencias started y su utilidad para la construir nuestros servicios.

El main de Spring Boot y su anotación

Para iniciar nuestra aplicación lo primero que necesitamos es crear una clase con el metodo main . Anotamos la clase con SpringBootApplication y le damos la instruccion a Spring que arranque con SpringApplication.run(…) .

SpringBoot-main.png

¿Qué hace la anotación SpringBootApplication?

Si nos metemos dentro de la anotación SpringBootApplication podemos observar que esta anotación de arranque es la suma de las anotaciones SpringBootConfiguration, EnableAutoConfiguration, ComponentScan

Spring Boot Main

@SpringBootConfiguration: indica que una clase proporciona la configuración de la aplicación. Es un alias de @Configuration con la diferencia en que SpringBootConfiguration permite que Spring encuentre las configuraciones automáticamente.

@EnableAutoConfiguration: permite que Spring Boot configure automáticamente la aplicación y registre los beans para su utilización. Esta autoconfiguración se aplica basada en las dependencias de la aplicación. La autoconfiguración intenta evitar configuraciones tediosas usando la inteligencia de Spring para tomar decisiones en cuando a las configuraciones habituales.

@ComponentScan: le da la directiva a Spring para que haga una búsqueda de todos los componentes anotados dentro de los paquetes. Es decir, buscará todo lo que esté anotado como @Component y sus clases hijas (Service, Repository, Controller) registrándolas en su contexto.

SpringBootApplication.png

Resumiendo hasta aquí, la anotación @SpringBootApplication le da la instrucción a Spring Boot para buscar @Beans de config, además activa la autoconfiguración dejando que Spring tome decisiones en cuanto a las configuraciones por default y realiza un escaneo de componentes en la aplicación.

Como iniciar la aplicación con SpringBootApplication

Una vez que ya tenemos el main de la aplicación anotada con @SpringBootApplication y con la instrucción SpringApplication.run(…) , ya esta lista para iniciarse.

Nuestra aplicación se ve de este modo.

Utilizamos aquí Gradle como gestor de dependencias y de construcción de la aplicación.

Spring Boot Main

build.gradle

plugins {
	id 'org.springframework.boot' version '2.5.4'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
	useJUnitPlatform()
}

¿Qué comando se utiliza para arrancar Spring Boot?

La instrucción para iniciar nuestra aplicación Spring Boot desde la línea de comandos es gradlew booRun .

Ubicados en el path donde tenemos nuestra aplicación ejecutamos gradlew booRun

gradlew booRun

En linux ./gradlew booRun

Spring Boot Main

En Windows gradlew booRun

Spring Boot Main

Conclusión

El main de Spring Boot es bastante simple, con unas pocas líneas y dependencias podemos crear e iniciar nuestra aplicación en Spring Boot.
La anotación SpringBootApplication la utilizamos para que Spring configure la aplicación y busque los componentes que necesitamos. Para iniciar la aplicacion usamos gradlew booRun con gradle .

If you wish to send me any corrections or suggestions, please contact me.
Thanks for your feedback :)

Ver también