Многие разработчики на 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
также содержит средства поддержки быстрого перезапуска приложений.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ