Muchos desarrolladores de Spring Boot quieren que sus aplicaciones utilicen configuración automática, escaneo de componentes y la capacidad de definir configuraciones adicionales en su "clase de aplicación". Para activar estas tres funciones, puede utilizar una única anotación @SpringBootApplication:

  • @EnableAutoConfiguration: habilita el mecanismo de configuración automática de Spring Boot

  • @ComponentScan: permite escanear la anotación @Component para el paquete en el que se encuentra la aplicación

  • @SpringBootConfiguration: le permite registrar beans adicionales en el contexto o importar clases de configuración adicionales. Una alternativa a la anotación estándar @Configuration de Spring que ayuda a descubrir configuraciones en sus pruebas de integración.

Java
importar org.springframework.boot.SpringApplication;
importar org.springframework.boot.autoconfigure.SpringBootApplication;
// Igual que @SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan
@SpringBootAplicación
clase pública MiAplicación {
    público estático vacío principal (String [] argumentos) {
        SpringApplication.run(MiAplicación.clase, args);
    }
}
Kotlin
importar org.springframework.boot.autoconfigure.SpringBootApplication
importar org.springframework.boot.runApplication
// igual que @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
@SpringBootAplicación
clase MiAplicación
diversión principal (argumentos: Array<String>) {
    ejecutarAplicación<MiAplicación>(*args)
}
@SpringBootApplication también proporciona alias para configurar las anotaciones @EnableAutoConfiguration y @ComponentScan atributos.

Ninguna de estas funciones es necesaria y puede reemplazar esta anotación única con cualquiera de las funciones que habilita. Por ejemplo, puede optar por no utilizar el escaneo de componentes o el escaneo de propiedades de configuración en su aplicación:

Java
importar org.springframework.boot.SpringApplication;
importar org.springframework.boot.SpringBootConfiguration;
importar org.springframework.boot.autoconfigure.EnableAutoConfiguration;
importar org.springframework.context.annotation.Import;
@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguración
@Importar({AlgunaConfiguración.clase, OtraConfiguración.clase })
clase pública MiAplicación {
    público estático vacío principal (String [] argumentos) {
        SpringApplication.run(MiAplicación.clase, args);
    }
}
Kotlin
importar org.springframework.boot.SpringBootConfiguration
importar org.springframework.boot.autoconfigure.EnableAutoConfiguration
importar org.springframework.boot.docs.usando.estructurandosucódigo.ubicandolaclaseprincipal.MiAplicación
importar org.springframework.boot.runApplication
importar org.springframework.context.annotation.Importar
@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguración
@Importar(AlgunaConfiguración::clase, OtraConfiguración::clase)
clase MiAplicación
diversión principal (argumentos: Array<String>) {
    ejecutarAplicación<MiAplicación>(*args)
}

En este ejemplo, MyApplication es igual que cualquier otra aplicación Spring Boot, excepto que las clases están anotadas con @Component y @ConfigurationProperties > no se detectan automáticamente y los beans personalizados se importan explícitamente (consulte la anotación @Import).

Ejecutando tu aplicación

Uno de los mayores beneficios de empaquetar su aplicación como un archivo jar y utilizar el servidor HTTP integrado es que puede ejecutar su aplicación como cualquier otra. Este ejemplo se utiliza para depurar aplicaciones en Spring Boot. No necesita ningún complemento o extensión especial para el IDE.

Esta sección describe únicamente el empaquetado basado en frascos. Si decide empaquetar su aplicación como un archivo war, consulte la documentación de su servidor o IDE.

Ejecución desde IDE

Puede ejecutar una aplicación Spring Boot desde su IDE como una aplicación Java. Sin embargo, primero debe importar el proyecto. Los pasos de importación dependen de su IDE y sistema de compilación. La mayoría de los IDE son capaces de importar proyectos Maven directamente. Por ejemplo, los usuarios de Eclipse pueden seleccionar Importar...​Proyectos Maven existentes en el menú Archivo.

Si no puede importar directamente su proyecto al IDE, puede generar metadatos del IDE utilizando el complemento de compilación. Maven incluye complementos para Eclipse y IDEA. Gradle proporciona complementos para varios IDE.

Si accidentalmente ejecuta una aplicación web dos veces, verá el error "Puerto ya en uso". Los usuarios de Spring Tools pueden usar el botón Relanzar en lugar del botón Ejecutar para asegurarse de que cualquier instancia existente esté cerrada.

Ejecución como aplicación empaquetada

Si está utilizando los complementos Spring Boot para Maven o Gradle para crear un archivo jar ejecutable, puede ejecutar su aplicación usando el comando java -jar, como se muestra en el siguiente ejemplo:

$ java -jar target/myapplication-0.0.1-SNAPSHOT.jar

También puede ejecutar una aplicación empaquetada con la depuración remota habilitada. Esto le permite adjuntar un depurador a una aplicación empaquetada, como se muestra en el siguiente ejemplo:

$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
       -jar target/miaplicación-0.0.1-SNAPSHOT.jar

Usando el complemento Maven

El complemento Spring Boot Maven incluye un destino run que puede utilizar para compilar y ejecutar rápidamente su aplicación. Las aplicaciones se ejecutan en forma desensamblada, como en su IDE. El siguiente ejemplo muestra un comando típico de Maven para ejecutar una aplicación Spring Boot:

$ mvn spring-boot:run

También puede utilizar la variable de entorno del sistema operativo MAVEN_OPTS, como se muestra en el siguiente ejemplo:

$ export MAVEN_OPTS=-Xmx1024m

Usando el complemento Gradle

El complemento Spring Boot Gradle también contiene una tarea bootRun que se puede utilizar para ejecutar la aplicación de forma inmediata. La tarea bootRun se agrega cada vez que utiliza los complementos org.springframework.boot y java y se muestra en el siguiente ejemplo:

$ gradle bootRun

También puede utilizar la variable de entorno del sistema operativo JAVA_OPTS, como se muestra en el siguiente ejemplo:

$ exportar JAVA_OPTS=-Xmx1024m

Intercambio en caliente

Dado que las aplicaciones Spring Boot son aplicaciones Java normales, el intercambio en caliente de JVM debería funcionar de inmediato. El intercambio en caliente en la JVM está algo limitado en el código de bytes que puede reemplazar. Como solución más completa, puede utilizar JRebel.

El módulo spring-boot-devtools también contiene soporte para reiniciar aplicaciones rápidamente.