Почему мне нужен основной метод, если я разрабатываю веб-приложение в качестве войны с помощью Spring Boot?
Я разрабатываю веб-приложение, используя Spring Boot. Мое типичное развертывание генерирует war
и помещает его в папку webapps
в каталоге Tomcat.
Я заметил с SpringBoot, мне понадобится метод main
. Мне интересно, почему это необходимо. Если есть способ избежать этого, что бы это было?
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
Ответы
Ответ 1
Основной метод не требуется для типичного сценария развертывания для создания войны и размещения его в папке webapps Tomcat. Все что вам нужно:
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
Однако, если вы хотите запустить приложение из среды IDE (например, с помощью Eclipse Run As → Java Application) при разработке или создать исполняемый банку или войну, который может работать автономно с помощью Spring Boot embedded tomcat командой java -jar myapp.war
, может оказаться полезным класс точки входа с основным методом.
Ответ 2
Для запуска в отдельном веб-контейнере
Вам не нужен основной метод, все, что вам нужно, это расширить SpringBootServletInitializer
, как упоминал Kryger.
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
....
....
Запуск в командной строке как отдельное приложение
Здесь вам нужен основной метод, так что вы можете запустить его с помощью java -jar
из командной строки.
public class Application {
public static void main(String[] args){
ConfigurableApplicationContext context = SpringApplication.run(Application.class, args);
}
....
....
Источник: https://spring.io/guides/gs/convert-jar-to-war/
Ответ 3
В Spring Для загрузки вам понадобятся три вещи:
1) используйте аннотацию @SpringBootApplication
2) продлить SpringBootServletInitializer
3) перезапишите метод configure, как показано выше.
и что это!