Многие разработчики на Spring Boot хотят, чтобы их приложения использовали автоконфигурацию, сканирование компонентов и могли определять дополнительную конфигурацию в своем "классе приложения". Для активации этих трех функций можно использовать единую аннотацию @SpringBootApplication:
-
@EnableAutoConfiguration: активирует механизм автоконфигурации Spring Boot -
@ComponentScan: активирует сканирование аннотации@Componentдля пакета, в котором находится приложение -
@SpringBootConfiguration: позволяет регистрировать дополнительные бины в контексте или импортировать дополнительные конфигурационные классы. Альтернатива стандартной аннотации@Configurationиз Spring, которая помогает обнаруживать конфигурации в ваших интеграционных тестах.
// То же, что и @SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
// same as @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan @SpringBootApplication class MyApplication fun main(args: Array<String>) { runApplication<MyApplication>(*args) }
@SpringBootApplication также предусматривает псевдонимы для настройки атрибутов аннотаций
@EnableAutoConfiguration и
@ComponentScan.
Ни одна из этих функций не является обязательной, и вы можете заменять эту единую аннотацию любой из функций, которые она активирует. Например, можно не использовать сканирование компонентов или сканирование конфигурационных свойств в своем приложении:
@SpringBootConfiguration(proxyBeanMethods = false) @EnableAutoConfiguration @Import({ SomeConfiguration.class, AnotherConfiguration.class }) public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
@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.
Выполнение из IDE
Вы можете запустить приложение Spring Boot из вашей IDE как Java-приложение. Однако сначала необходимо импортировать проект. Этапы импорта зависят от вашей IDE и системы сборки. Большинство IDE способны импортировать Maven-проекты напрямую. Например, пользователи Eclipse могут выбрать Import… → Existing Maven Projects из меню File.
Если нельзя напрямую импортировать свой проект в IDE, то можно сгенерировать метаданные IDE с помощью плагина сборки. Maven включает в себя плагины для Eclipse и IDEA. Gradle предусматривает плагины для различных IDE.
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 также содержит средства поддержки быстрого перезапуска приложений.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ