← Назад к вопросам

В каком формате Spring Boot собирает Web приложение

1.0 Junior🔥 101 комментариев
#Spring Boot и Spring Data#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Формат сборки Spring Boot приложения

Spring Boot собирает веб приложения в виде JAR файла (не WAR), с встроенным Tomcat сервером. Это ключевая особенность Spring Boot.

JAR vs WAR

WAR (старый подход, Pre-Spring Boot)

  • Web Application Archive
  • Нужно развертывание на внешнем Application Server (Tomcat, JBoss)
  • Структура: WEB-INF/classes, WEB-INF/lib

JAR (современный подход, Spring Boot)

  • Java Archive
  • Включает встроенный Tomcat/Jetty/Undertow
  • Быстро запускается: java -jar app.jar

Структура JAR файла Spring Boot

my-app.jar
├── BOOT-INF/
│   ├── classes/           # Скомпилированные классы приложения
│   │   ├── application.properties
│   │   └── com/example/...
│   └── lib/               # Все зависимости (200+ jar файлов)
├── META-INF/
│   ├── MANIFEST.MF        # Main-Class, Start-Class
│   └── spring.factories   # Конфигурация Spring Boot
└── org/
    └── springframework/boot/loader/
        └── JarLauncher.class  # Custom classloader для загрузки

Как это работает

  1. JVM загружает JarLauncher из Spring Boot
  2. JarLauncher инициализирует custom classloader
  3. Classloader загружает классы из BOOT-INF/classes
  4. Затем загружает все jar файлы из BOOT-INF/lib
  5. Запускает Main-Class (обычно класс с public static void main)

Команды сборки

Maven

mvn clean package
# Создает target/my-app.jar

pom.xml конфигурация:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>com.example.Application</mainClass>
    </configuration>
</plugin>

Gradle

gradle bootJar
# Создает build/libs/my-app.jar

Запуск

java -jar my-app.jar

# С параметрами
java -jar my-app.jar --server.port=8080 --spring.profiles.active=prod

# С переменными окружения
export SERVER_PORT=8080
java -jar my-app.jar

Преимущества JAR формата

Независимость — не нужен внешний Tomcat ✓ Простота развертывания — один файл ✓ Docker friendly — легко контейнеризировать ✓ Быстрый старт — встроенный сервер готов сразу ✓ Версионирование — версия в названии файла

Это сделало Spring Boot революционным для микросервисов и облачных приложений.

В каком формате Spring Boot собирает Web приложение | PrepBro