JavaRush /Курсы /Модуль 5. Spring /Основные компоненты Spring Boot

Основные компоненты Spring Boot

Модуль 5. Spring
4 уровень , 1 лекция
Открыта

Spring Boot не просто так любят разработчики — он предлагает множество удобных компонентов, которые делают жизнь программиста проще (и, возможно, веселее). Давайте разберём три ключевых составляющих:

  1. Стартовые зависимости (Starters)
  2. Автоконфигурация (Auto-Configuration)
  3. Встроенные серверы

1. Стартовые зависимости (Starters) — наборы всего нужного

Помните, как в классическом Spring приходилось долго искать и подключать нужные библиотеки? Spring Boot решает эту проблему с помощью стартеров (starters). Это готовые наборы библиотек для разных задач.

Хотите создать веб-приложение? Просто добавьте spring-boot-starter-web, и Spring Boot сам подключит всё необходимое: Tomcat для запуска, библиотеки для REST API и обработки запросов.

Почему это удобно?

Представьте, что вы делаете пиццу. Вместо того чтобы бегать по магазинам и искать отдельно тесто, сыр, соус и специи, вы берёте готовый набор "Всё для пиццы". Стартеры работают так же — они содержат все нужные компоненты для конкретной задачи.

Давайте попробуем! Добавим стартер для веб-приложения:

Maven


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Gradle


implementation 'org.springframework.boot:spring-boot-starter-web'

Готово! Spring Boot подключит все нужные библиотеки, и вы можете сразу начинать разработку.

Полезные стартовые зависимости

Вот те, которые вы точно встретите чаще всего:

  • spring-boot-starter-web — для веб-приложений и REST API.
  • spring-boot-starter-data-jpa — для работы с базами данных через JPA.
  • spring-boot-starter-security — для добавления фич безопасности.
  • spring-boot-starter-test — для написания тестов.

Spring Boot позаботился даже об экстремальных ситуациях и добавил spring-boot-starter-logging по умолчанию. Потому что кто не любит читать логи на проде, правда?


2. Автоконфигурация (Auto-Configuration)

В старые и не такие уж и добрые времена каждый Spring-проект начинался с часов XML-конфигурации.
От одних воспоминаний об этих бесконечных <bean> бросает в дрожь. К счастью, автоконфигурация в Spring Boot перевернула этот мир - теперь Spring сам анализирует ваши зависимости и настраивает всё необходимое. Добавили H2 в pom.xml? Бам! У вас уже готово подключение к базе данных.

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

Автоконфигурация — это набор готовых предустановленных правил. Например, если в вашем classpath найдена библиотека spring-web, то Spring Boot настроит веб-сервер. Если найдена spring-data-jpa, он автоматически настроит JPA и EntityManager.

Аннотация @EnableAutoConfiguration

Давайте взглянем на нашу любимую аннотацию @SpringBootApplication, которая объединяет:

  • @Configuration — определяет, что это конфигурационный класс.
  • @EnableAutoConfiguration — включает магию автоконфигурации.
  • @ComponentScan — сканирует классы нашего приложения.

Автоконфигурация будет работать по умолчанию. Но что, если вам нужно отключить её для специфического компонента?

Добавьте это в основной класс приложения:


@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

Теперь никакой автоматической настройки для DataSource (подключение к базе) — вы сами выбираете, что и как настраивать.


3. Встроенные серверы

Spring Boot поставляется со встроенными серверами, как, например, Tomcat, Jetty или Undertow. Это значит, что вы больше не обязаны вручную настраивать и деплоить приложение на каком-то внешнем сервере. Запустили приложение, и сервер стартует вместе с ним.

Теперь сервер "встроен", как модуль Wi-Fi в современный холодильник.

Преимущества встроенных серверов

  1. Простота запуска: меньше забот о конфигурации стороннего сервера.
  2. Мобильность: приложение работает везде — локально, в тестовой среде или в облаке.
  3. Поддержка DevOps: упрощает автоматизацию и CI/CD. Вам не нужно устанавливать отдельные серверы на каждом этапе.

Изменение настроек сервера

Изменить настройки можно application.properties или application.yml.

Например, чтобы изменить порт:


server.port=8081

Теперь ваш сервер будет работать на порту 8081. Хотите сменить сервер с Tomcat на Jetty? Просто добавьте зависимость:


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

И удалите Tomcat:


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-tomcat</artifactId>
  <scope>provided</scope>
</dependency>

Простая замена зависимостей — и сервер готов!


Практика: Ваша первая магическая конфигурация

Теперь, когда мы обсудили основы компонентов Spring Boot, давайте попробуем настроить простое приложение и используем стартеры, автоконфигурацию и встроенный сервер вместе.

Шаг 1. Создаём проект

Перейдите на Spring Initializr и создайте новый проект с зависимостью spring-boot-starter-web.

Шаг 2. Добавляем контроллер

Создайте REST-контроллер для приветствия:


@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Привет, Spring Boot!";
    }
}

Шаг 3. Настраиваем сервер

В application.properties добавьте это:


server.port=8082

Теперь сервер будет слушать на порту 8082.

Шаг 4. Запускаем

Запустите приложение — и магия Spring Boot начнёт работать. Откройте браузер по адресу http://localhost:8082/hello, и вы увидите любезное "Привет, Spring Boot!"


Всё это — лишь начало вашей истории с Spring Boot. Стартовые зависимости, автоконфигурация и встроенные серверы — это фундамент, на котором строятся быстрые, удобные и мощные приложения. Следующий шаг — погружение в настройки автоконфигурации, чтобы ваша магия стала по-настоящему кастомной.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ