Ответ
Spring Boot использует встроенный (embedded) сервер приложений (по умолчанию Tomcat), что позволяет упаковывать приложение как самодостаточный исполняемый JAR-файл.
Принцип работы:
- Зависимость
spring-boot-starter-webвключает в себя Tomcat как транзитивную зависимость. - При запуске
SpringApplication.run()Spring Boot автоматически настраивает и запускает встроенный экземпляр Tomcat на порту 8080. - Контроллеры, объявленные с
@RestController, автоматически маппируются на этот сервер.
Пример контроллера:
@RestController
@RequestMapping("/api")
public class ExampleController {
@GetMapping("/hello")
public ResponseEntity<String> hello() {
return ResponseEntity.ok("Hello from embedded Tomcat!");
}
}
Конфигурация и кастомизация:
- Смена порта:
server.port=9090вapplication.properties. - Контекстный путь:
server.servlet.context-path=/myapp. - Замена сервера: Можно легко заменить Tomcat на Jetty или Undertow, исключив зависимость Tomcat и добавив другую.
Ключевое преимущество: Отсутствие необходимости в отдельной установке и настройке сервера приложений. Приложение «переносится со своим сервером».