Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Структура проекта и 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 версию не пишут — её задаёт родитель.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.