Spring Boot не дарма так полюбили розробники — він пропонує купу зручних компонентів, які роблять життя програміста простішим (і, можливо, веселішим). Давайте розберемо три ключові складові:
- Стартові залежності (Starters)
- Автоконфігурація (Auto-Configuration)
- Вбудовані сервери
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 у сучасному холодильнику.
Переваги вбудованих серверів
- Простота запуску: менше клопоту з конфігурацією стороннього сервера.
- Мобільність: застосунок працює скрізь — локально, у тестовому середовищі або в хмарі.
- Підтримка 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. Стартові залежності, автоконфігурація і вбудовані сервери — це фундамент, на якому будуються швидкі, зручні і потужні застосунки. Наступний крок — занурення в налаштування автоконфігурації, щоб ваша магія стала по-справжньому кастомною.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ