С этой же страницы (11.3.3):
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started-first-application-main-method
Заключительная часть нашего приложения является основным методом.Это просто стандартный метод, который следует Java-соглашению для точки входа приложения.Наш основной метод делегирует класс SpringAot SpringApplication, вызывая run.SpringApplication загружает наше приложение, начиная Spring, который, в свою очередь, запускает автоматически настроенный веб-сервер Tomcat.Нам нужно передать Example.class в качестве аргумента методу run, чтобы сообщить SpringApplication, который является основным компонентом Spring.Массив args также передается для представления любых аргументов командной строки.
Дополнительная информация о public static void main
и его связи с ServletContainerInitializer
:
https://www.logicbig.com/tutorials/spring-framework/spring-boot/boot-serve-dynamic.html
Почему SpringBootServletInitializer должен быть разделен на подклассы?Для создания развертываемого файла войны мы должны предоставить подкласс SpringBootServletInitializer и переопределить его метод configure.
... Основной класс расширяет SpringBootServletInitializer, который, в свою очередь, расширяет WebApplicationInitializer.WebApplicationInitializer основан на концепции сервлета 3.0 ServletContainerInitializer. Назначение этого расширения: WebApplicationInitializer устанавливает контекст сервлета и дополнительно просит подкласс настроить источник (класс, аннотированный @SpringBootApplication) SpringApplication, чтобы он мог вызывать SpringApplication # run () с допустимымsource и может выполнять автоматическую настройку, проводку bean-компонента уровня приложения и т. д. Эта схема необходима только в том случае, если приложение развернуто в контейнере сервлета в виде файла war. В веб-контейнере, конечно, «основной метод» не может быть выполненкак это происходит в автономном взорванном приложении или исполняемом jar или war.