Структура проекта и pom.xml
Spring Boot опирается на соглашения: если положить файл в нужную папку, фреймворк найдёт его сам. Поэтому важно знать, что где лежит. Главный файл сборки — pom.xml: в нём перечислены библиотеки проекта.
Папки
| Путь | Что там лежит |
|---|---|
src/main/java/com/example/blog/ | Java-код приложения |
src/main/resources/application.properties | Настройки |
src/main/resources/static/ | Статические файлы: CSS, картинки, JS — отдаются как есть |
src/main/resources/templates/ | HTML-шаблоны Thymeleaf |
src/main/resources/db/migration/ | SQL-миграции Flyway |
src/test/java/com/example/blog/ | Тесты |
target/ | Результат сборки — создаётся Maven, в Git не добавляется |
Папок static, templates и db/migration в новом проекте нет — создадим их, когда дойдём до соответствующих уроков.
Родительский POM
<!-- pom.xml -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.1.1</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>blog</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>25</java.version>
</properties>Проект наследует настройки от spring-boot-starter-parent. Родитель знает подходящие друг к другу версии сотен библиотек, поэтому у зависимостей ниже версии не указываются. Свойство java.version задаёт версию Java для компиляции.
Стартеры
<!-- pom.xml -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webmvc-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>Стартер — это зависимость-набор. spring-boot-starter-webmvc подтягивает Spring MVC, встроенный Tomcat и библиотеку Jackson для JSON. Второй стартер с <scope>test</scope> нужен только для тестов и в готовое приложение не попадает.
В Spring Boot 4 у каждого модуля есть своя пара стартеров: основной и -test. Например, spring-boot-starter-data-jpa и spring-boot-starter-data-jpa-test.
Плагин сборки
<!-- pom.xml -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>Этот плагин добавляет команду spring-boot:run и упаковывает приложение в один исполняемый JAR-файл со всеми библиотеками внутри.
Как добавить зависимость
Когда в курсе понадобится новый модуль, мы добавим его блок <dependency> в pom.xml. После правки IDE предложит перезагрузить проект Maven, а команда ./mvnw spring-boot:run скачает новые библиотеки сама. Нужный блок удобно взять на start.spring.io: кнопка Explore показывает готовый pom.xml для выбранных модулей.
Частая ошибка
Если указать у стартера версию вручную, например <version>3.5.0</version>, в проект попадут библиотеки из разных выпусков Spring Boot. Приложение может собраться, но упасть при запуске с ошибкой вроде NoSuchMethodError или ClassNotFoundException. У зависимостей из Spring Boot версию не пишут — её задаёт родитель.