Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: Spring Boot, embedded server, Tomcat, Jetty, Undertow

На каком сервере обычно запускается Spring boot приложение?

Вопрос проверяет понимание среды выполнения Spring Boot приложений и знание встроенных серверов, что важно для развертывания и конфигурации.

Короткий ответ

Spring Boot приложения по умолчанию запускаются на встроенном (embedded) сервере. Чаще всего это Apache Tomcat. Spring Boot автоматически настраивает его, если в зависимостях есть spring-boot-starter-web. Это позволяет упаковать приложение в один исполняемый JAR-файл, содержащий и код, и сервер. Также можно использовать альтернативные серверы, такие как Jetty или Undertow, изменив зависимости в проекте.

Длинный ответ

Spring Boot использует концепцию встроенного сервера (embedded server), чтобы упростить развертывание и запуск приложений. Вместо необходимости устанавливать и настраивать внешний сервер приложений, такой как традиционный Tomcat, вы получаете сервер, который запускается внутри самого Java-процесса вашего приложения.

Стандартный встроенный сервер

По умолчанию, когда вы добавляете зависимость spring-boot-starter-web в проект Maven или Gradle, Spring Boot автоматически включает и настраивает Apache Tomcat в качестве встроенного контейнера сервлетов. Это означает, что при запуске приложения (например, через метод main в классе с аннотацией @SpringBootApplication) стартует экземпляр Tomcat, который развертывает ваше приложение на указанном порту (по умолчанию 8080).

Альтернативные серверы

Spring Boot поддерживает замену Tomcat на другие популярные серверы. Для этого нужно исключить стартер Tomcat из зависимостей и добавить стартер для другого сервера. Например:

  • Jetty: Используется, если нужна высокая производительность и асинхронная обработка.
  • Undertow: Легковесный сервер от Red Hat, часто выбираемый для микросервисов.

Пример конфигурации в Maven для перехода на Jetty:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

Запуск в WAR на внешнем сервере

Хотя встроенный сервер — это стандарт, Spring Boot также позволяет упаковать приложение в традиционный WAR-файл для развертывания на внешнем сервере приложений (например, на отдельном экземпляре Tomcat, WildFly или WebSphere). Для этого нужно изменить тип упаковки в конфигурации и сделать класс приложения наследником SpringBootServletInitializer.

Выбор между встроенным и внешним сервером зависит от требований к инфраструктуре, оркестрации (например, Docker, Kubernetes) и политикам развертывания в компании.

Итог: Spring Boot приложение обычно запускается на встроенном сервере Tomcat, что идеально подходит для микросервисов, облачных развертываний и быстрого старта разработки, так как не требует внешней настройки сервера.

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • Java

    Java

  • Spring

    Spring

Ключевые слова

#Spring Boot

#embedded server

#Tomcat

#Jetty

#Undertow

Подпишись на Java Developer в телеграм