1. Spring Boot Starters: Магія залежностей

Раніше в Spring розробник мав сам шукати сумісні версії бібліотек (наприклад, щоб Hibernate підходив до Spring Core). Spring Boot вирішив це через Starters.
  • Starter — це просто набір посилань на інші бібліотеки.
  • Ви додаєте spring-boot-starter-web, а він сам "тягне" за собою Tomcat, Jackson (для JSON), Spring MVC та валідацію.
  • Parent POM: У Maven ваш проект успадковує spring-boot-starter-parent. Це дозволяє не писати номери версій для кожної бібліотеки. Spring знає, які версії найкраще працюють разом.

2. Конфігурація: Properties vs YAML

Spring Boot дозволяє винести всі налаштування за межі коду. Ви можете використовувати два формати:
application.properties (плаский список):
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/db
application.yml (ієрархічне дерево):
server:
  port: 8081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/db
Порада: YAML зручніший для великих проектів, бо він наочно показує структуру об'єктів.

3. Як зчитати налаштування в коді

Є два головні способи отримати дані з цих файлів у Java:
  • @Value: Для поодиноких значень.
    @Value("${app.upload.path}")
    private String uploadPath;
    
  • @ConfigurationProperties: Для групування логічно пов'язаних налаштувань у об'єкт. Це надійніше і дозволяє валідувати дані.

4. Профілі (Profiles)

Це одна з найкрутіших фішок. Ви можете мати різні налаштування для розробки (dev), тестування (test) та реальних користувачів (prod).
  1. Створюєте файли: application-dev.yml та application-prod.yml.
  2. Активуєте потрібний у головному файлі:
    spring:
      profiles:
        active: dev
    
Або через термінал при запуску: --spring.profiles.active=prod.

5. Автоконфігурація: Як це працює?

Коли ви запускаєте додаток з анотацією @SpringBootApplication, відбувається наступне:
  1. Component Scan: Spring шукає всі ваші @Service, @Controller тощо.
  2. Auto-configuration: Spring дивиться, які бібліотеки є у вашому pom.xml.
    • Приклад: Якщо він бачить бібліотеку H2 (база в пам'яті), він автоматично створить бін DataSource і підключиться до неї без жодного рядка коду від вас.
Ця логіка базується на анотаціях типу @ConditionalOnClass або @ConditionalOnProperty. Бін створюється лише тоді, коли виконується певна умова.

6. Пріоритет налаштувань

Spring Boot дуже гнучкий. Якщо параметр вказаний у кількох місцях, він обирає найважливіший. Порядок такий (від найсильнішого до найслабшого):
  1. Аргументи командного рядка (--server.port=9000).
  2. Змінні оточення ОС.
  3. application.properties (або YAML) за межами проекту.
  4. application.properties всередині проекту.



Остання зміна: середа 20 травня 2026 12:21 PM