Я посмотрел на источник Springboot и почувствовал, что метод run SpringApplication будет выполнен дважды. В первый раз, когда вы выполните следующий код
public static void main(String[] args) {
SpringApplication.run(HppaApplication.class, args);
}
Во второй раз, Servlet3.0, если он указан во время запуска веб-контейнера, будет go обратному вызову метода ServletContainerInitializer onStartup в классе реализации, и через @ HandlesTypes в соответствующие классы реализации и, наконец, при вызове метода onStartup SpringBootServletInitializer этот метод вызывает метод createRootApplicationContext, метод CreateRootApplicationContext в приведенном ниже коде
protected WebApplicationContext createRootApplicationContext(ServletContext servletContext) {
// Omit other code
return run(application);
}
Опять же, выполняется метод run SpringApplication. Зачем выполнять этот метод дважды?