Что такое Spring Boot и каковы его ключевые особенности?

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

Ответ

Spring Boot — это фреймворк поверх Spring, созданный для быстрой разработки и минимальной конфигурации standalone-приложений. Он следует принципу "convention over configuration" (соглашения вместо конфигураций).

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

  1. Автоконфигурация (Auto-configuration): Автоматически настраивает компоненты Spring и сторонних библиотек на основе classpath и заданных свойств.
  2. Стартеры (Starters): Зависимости spring-boot-starter-*, которые объединяют всё необходимое для конкретной технологии (например, spring-boot-starter-web, spring-boot-starter-data-jpa).
  3. Встроенные серверы (Embedded Servers): Содержит Tomcat, Jetty или Undertow, поэтому приложение запускается как обычный JAR-файл, без развертывания в отдельном веб-сервере.
  4. Actuator: Предоставляет готовые HTTP-эндпоинты для мониторинга и управления приложением (health, metrics, info).
  5. Внешняя конфигурация: Гибкое управление настройками через application.properties/application.yml, переменные окружения и аргументы командной строки.

Пример минимального Spring Boot приложения:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;

@SpringBootApplication // Объединяет @Configuration, @EnableAutoConfiguration, @ComponentScan
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args); // Запуск встроенного сервера
    }
}

@RestController
@RequestMapping("/api")
class HelloController {
    @GetMapping("/hello")
    public String sayHello(@RequestParam(defaultValue = "World") String name) {
        return String.format("Hello, %s!", name);
    }
}

Запуск: java -jar demo-application.jar.