В чем ключевые различия между Spring Framework и Spring Boot?

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

Ответ

Spring Framework — это базовый модульный фреймворк для создания Java-приложений. Он предоставляет фундаментальную инфраструктуру (IoC, AOP, транзакции) и множество модулей (Spring MVC, Spring Data, Spring Security), но требует значительной ручной конфигурации (XML, аннотации, Java Config).

Spring Boot — это opinionated надстройка над Spring, созданная для упрощения и ускорения разработки готовых к работе приложений.

Ключевые отличия Spring Boot:

  1. Автоконфигурация (Auto-configuration): Автоматически настраивает бины и компоненты на основе classpath и свойств приложения, минимизируя ручную работу.
  2. Стартер-зависимости (Starters): Упрощенные POM-зависимости (например, spring-boot-starter-web), которые тянут за собой все необходимое для конкретной задачи.
  3. Встроенный сервер (Embedded Server): Содержит Tomcat, Jetty или Undertow, что позволяет упаковывать приложение как исполняемый JAR-файл.
  4. Actuator: Готовые HTTP-эндпоинты для мониторинга здоровья, метрик, конфигурации приложения.
  5. Конфигурация через свойства: Единый подход к конфигурации через application.properties/application.yml.

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

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

Итог: Spring Boot не заменяет Spring, а предоставляет быстрый способ создания автономных, production-готовых приложений на его основе, следуя принципу «convention over configuration».