Почему мне нужен основной метод, если я разрабатываю веб-приложение в качестве войны с помощью 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, как показано выше.

и что это!