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 за замовчуванням. Бо хто не любить читати логи в production, правда?


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. Стартові залежності, автоконфігурація і вбудовані сервери — це фундамент, на якому будуються швидкі, зручні і потужні застосунки. Наступний крок — занурення в налаштування автоконфігурації, щоб ваша магія стала по-справжньому кастомною.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ