В каком формате (типе архива) Spring Boot по умолчанию собирает веб-приложение?

«В каком формате (типе архива) Spring Boot по умолчанию собирает веб-приложение?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Spring Boot по умолчанию собирает веб-приложение в исполняемый JAR-файл (Executable JAR), который содержит встроенный веб-сервер (обычно Tomcat, Jetty или Undertow).

Ключевые особенности:

  • "Fat JAR" или "Uber JAR": Файл содержит все зависимости (библиотеки), классы приложения и встроенный сервер, упакованные вместе. Это позволяет запускать приложение одной командой, без необходимости развертывания на внешнем сервере приложений.
  • Структура: Внутри JAR-файла классы и зависимости упакованы в BOOT-INF/classes и BOOT-INF/lib соответственно.
  • Манифест: В META-INF/MANIFEST.MF указан главный класс org.springframework.boot.loader.JarLauncher, который является специальным загрузчиком Spring Boot.

Альтернативный формат: Spring Boot также поддерживает сборку в WAR-файл (Web Application Archive) для традиционного развертывания на внешнем сервере приложений (например, Tomcat, WildFly). Для этого в pom.xml (Maven) или build.gradle (Gradle) нужно изменить упаковку (<packaging>) на war.

Пример команды запуска:

java -jar my-spring-boot-app.jar