## Spring Initializr — створення проєкту

На цьому екрані ми задаємо “скелет” майбутнього Spring Boot застосунку: тип збірки, мову, версію, метадані, упаковку і Java.
Maven
Java
Spring Boot 3+
Jar
Properties
Java 17
Рис. 2 Налаштування Spring Initializr. Зелені позначки — рекомендований вибір для нашої практичної.

### 1) Project: Maven / Gradle — що це таке

Це система збірки: як проєкт завантажує бібліотеки, компілюється, запускає тести і збирає jar-файл.

- Maven — класика Java-світу, дуже часто в навчанні та enterprise.
- Gradle — теж популярний, але для новачків частіше складніше на старті.

Для практичної: беремо Maven, бо він простіший і прогнозований для групи.

### 2) Language: Java / Kotlin / Groovy

- Java — основна мова курсу і найпоширеніший варіант у Spring-проєктах.
- Kotlin — крута, але це інша мова і інший синтаксис (не змішуємо на старті).
- Groovy — рідше використовується для сучасних Spring Boot backend як основна мова.

Для практичної: вибираємо Java.

### 3) Spring Boot version: SNAPSHOT / M1 / stable

Тут важливо розуміти різницю:

- SNAPSHOT — “ще в розробці”, може ламатися і мінятися.
- M1 / Milestone — тестова попередня версія (не фінальна).
- Stable (реліз) — стабільна версія для нормальної роботи.

Для практичної: обираємо стабільну версію (на зразок 3.x). SNAPSHOT/M1 — не беремо.

### 4) Project Metadata — що означають поля

Group (наприклад: com.example)

Це “корінь” для package-ів. Зазвичай використовують домен у зворотному напрямку. У реальних проєктах це може бути: ua.ldubgd або com.company.

Artifact (наприклад: demo)

Назва артефакту/модуля. Впливає на назву папки проєкту і jar-файлу.

Name (наприклад: demo)

“Людська” назва проєкту (часто збігається з Artifact).

Description

Опис проєкту. На роботу коду майже не впливає, але це частина “охайності” проєкту.

Package name (наприклад: com.example.demo)

Це базовий пакет, всередині якого Spring буде шукати компоненти (controllers/services/repositories). Якщо розкидаєте класи поза цим пакетом — Spring може їх не “бачити”.

Правило: головний клас Spring Boot має бути в “корені” вашого package name.

### 5) Packaging: Jar vs War

- Jar — стандарт Spring Boot: запускаємо як звичайний застосунок (вбудований сервер).
- War — старий підхід: деплой у зовнішній Tomcat (частіше legacy-системи).

Для практичної: беремо Jar. Це швидше і простіше.

### 6) Configuration: Properties vs YAML

- application.properties — прості “ключ=значення”, легко читати новачкам.
- application.yml — структура з відступами, зручно для великих конфігів, але можна “вбитися” об пробіли.

Для практичної: обираємо Properties.

### 7) Java: 17 / 21 / 25 — що вибираємо і чому

Spring Boot 3+ орієнтується на сучасну Java. Для курсу нам важлива стабільність і сумісність.

- Java 17 — дуже стабільна база, мінімум сюрпризів, підтримується Spring Boot 3.
- Java 21 — теж популярний вибір (LTS), але якщо група вся на 17 — не розвалюємо середовище.
- Java 25 — вже занадто нова для навчальної стандартизації.

Для практичної: беремо Java 17 (єдина версія для всієї групи).

### 8) Після заповнення — що буде згенеровано

Після натискання Generate ми отримуємо zip-архів з мінімальним проєктом:

- pom.xml (Maven залежності)
- src/main/java + головний клас Spring Boot
- src/main/resources + application.properties
- структура готова для додавання Controller / Service / Repository

Порада: 1) Розпакували zip 2) Відкрили папку як проєкт в IntelliJ IDEA 3) Дочекались Maven sync 4) Запустили Application (Run)

Далі: вибір залежностей (Spring Web / Spring Data JPA / H2 або MySQL)