Багато розробників на Spring Boot хочуть, щоб їх програми використовували автоконфігурацію, сканування компонентів і могли визначати додаткову конфігурацію у своєму "класі програми". Для активації цих трьох функцій можна використовувати єдину анотацію @SpringBootApplication:

  • @EnableAutoConfiguration: активує механізм автоконфігурації Spring Boot

  • @ComponentScan: активує сканування анотації @Component для пакета, в якому знаходиться програма

  • @SpringBootConfiguration: дозволяє реєструвати додаткові біни в контексті або імпортувати додаткові класи конфігурації. Альтернатива стандартної анотації @Configuration зі Spring, яка допомагає виявляти конфігурації у твоїх інтеграційних тестах.

Java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// Те саме, що і @SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
Kotlin
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
// Те саме, що і @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
@SpringBootApplication
class MyApplication
fun main(args: Array<String>) {
    runApplication<MyApplication>(*args)
}
@SpringBootApplication також передбачає псевдоніми для налаштування атрибутів анотацій @EnableAutoConfiguration та @ComponentScan.

Жодна з цих функцій не є обов'язковою, і ти можеш замінювати цю єдину анотацію будь-якою з функцій, які вона активує. Наприклад, можна не використовувати сканування компонентів або сканування конфігураційних властивостей у своїй програмі:

Java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Import;
@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import({ SomeConfiguration.class, AnotherConfiguration.class })
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}
Kotlin
import org.springframework.boot.SpringBootConfiguration
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.docs.using.structuringyourcode.locatingthemainclass.MyApplication
import org.springframework.boot.runApplication
import org.springframework.context.annotation.Import
@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import(SomeConfiguration::class, AnotherConfiguration::class)
class MyApplication
fun main(args: Array<String>) {
    runApplication<MyApplication>(*args)
}

У цьому прикладі MyApplication є таким же, як і будь-яка інша програма Spring Boot, за винятком того, що класи, анотовані @Component та @ConfigurationProperties, не виявляються автоматично, а біни користувача імпортуються явно (див. анотацію @Import).

Виконання програми

Однією з найбільших переваг упаковки програми у вигляді jar-файлу та використання вбудованого HTTP-сервера є те, що ти можеш запускати свою програму так само, як і будь-яку іншу. Цей зразок застосовується для налагодження програм Spring Boot. Тобі не потрібні спеціальні плагіни або розширення для IDE.

У цьому розділі описано лише упаковку на основі jar-файлів. Якщо ти вирішиш запакувати свою програму у вигляді war-файлу, звернися до документації для твого сервера або IDE.

Виконання з IDE

Можна запустити програму Spring Boot з твоєї IDE як Java-додаток. Однак спочатку необхідно імпортувати проєкт. Етапи імпорту залежать від твоєї IDE та системи збирання. Більшість IDE здатні імпортувати Maven-проекти безпосередньо. Наприклад, користувачі Eclipse можуть вибрати Import…Existing Maven Projects з меню File.

Якщо не можна безпосередньо імпортувати свій проєкт у IDE, можна згенерувати метадані IDE за допомогою плагіна складання. Maven включає плагіни для Eclipse та IDEA. Gradle передбачає плагіни для різних IDE.

Якщо ти випадково запустиш вебдодаток двічі, то побачиш помилку "Порт уже використовується (Port already in use)". Користувачі Spring Tools можуть використовувати кнопку Relaunch, а не кнопку Run, щоб переконатися, що будь-який екземпляр закритий.

Виконання у вигляді упакованої програми

Якщо ти використовуєш плагіни Spring Boot для Maven або Gradle, щоб створити виконуваний jar-файл, то можеш запустити свою програму за допомогою команди java -jar, як показано в наступному прикладі:

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

Також можна запустити упаковану програму з активованою підтримкою віддаленого налагодження. Це дозволяє підключати налагоджувач до упакованої програми, як показано в наступному прикладі:

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

Використання плагіна для Maven

Плагін Spring Boot для Maven містить мету run, яку можна використовувати для швидкої компіляції та виконання програми. Програми виконуються у розібраному вигляді, як і в твоєму IDE. У наступному прикладі показано типову команду Maven для виконання програми Spring Boot:

$mvn spring-boot:run

Ти також можеш використовувати змінну оточення операційної системи MAVEN_OPTS, як показано в наступному прикладі:

$ export MAVEN_OPTS=-Xmx1024m

Використання плагіна для Gradle

Плагін Spring Boot Gradle також містить завдання bootRun, яке можна використовувати для запуску програми у розібраному вигляді. Завдання bootRun додається кожного разу, коли ти використовуєш плагіни org.springframework.boot та java, як показано в наступному прикладі:

$ gradle bootRun

Ти також можеш використовувати змінну оточення операційної системи JAVA_OPTS, як показано в наступному прикладі:

$ export JAVA_OPTS=-Xmx1024m

Гаряча заміна

Оскільки програми Spring Boot є звичайними Java-додатками, гаряча заміна JVM повинна працювати "з коробки". Гаряча заміна JVM дещо обмежена щодо байт-коду, який вона може замінити. Як повніше рішення можна використовувати JRebel.

Модуль spring-boot-devtools також містить засоби підтримки швидкого перезапуску додатків.