Топ-100Spring Boot: в чём его сила и удобство? - CodOrbits
LogoCodOrbits

Раздел: Spring Boot

Раздел посвящён Spring Boot — инструменту для быстрой и простой разработки Spring-приложений с минимальной настройкой.

Все разделы
Иконка Spring Boot

Spring Boot: в чём его сила и удобство?

Last updated: 12 мая 2025 г.

Что такое Spring Boot приложение?

Spring Boot приложение это почти то же самое Spring приложение, что мы изучали раньше, но с дополнительными средствами упрощающими разработку. Эти средства помогают легче конфигурировать наше приложение и взаимодействовать с ним.

Отметим основные моменты:

1. Во первых, в Spring Boot приложении сокращено количество файлов (нет файла настроек бинов applicationContext, файла web.xml и других), которые нужно было конфигурировать вручную и где легко ошибиться и потом долго искать ошибку.

В Spring Boot приложении нам вообще не придется лезть в папку WEB-INF (которой собственно и нет в Spring Boot приложении). Спринг Бут сам за кулисами конфигурирует приложение. А нужные нам настройки пишутся в отдельном файле настроек application.properties в очень коротком и простом виде.

2. Второй важный момент, что не нужно беспокоиться о совместимости версий зависимостей в pom, ведь часто приходиться тратить много времени на поиск совместимых. Спринг Бут предоставляет специальные зависимости, которые представляют собой наборы всем нам известных ранее зависимостей, которые уже сразу между собой совместимы.

3. В третьих, стартовый Спринг Бут проект можно настроить (настроить стартовые зависимости, тип сборщика Maven или Gradle и т.д.) удобным интуитивным интерфейсом в интернете на сайте Spring Initializer и скачать этот настроенный проект с этого сайта. Что упрощает стартовую конфигурацию проекта.

Раньше, чтобы создать новый Spring проект, приходилось копировать старый проект и редактировать его, потому что создавать Spring проект с нуля морока серьезная. Спринг Бут же серьезно упрощает создание нового Спринг проекта.

Давайте зайдем на сайт https://start.spring.io/ , сконфигурируем и скачаем наше первое Spring Boot приложение:

Видим интерфейс для настройки стартового Spring Boot приложения. Здесь, как видим, можно выбрать сборщик проекта (они бывают разные, но мы выберем Maven), язык Spring Boot проекта, его версию, и также можно сразу настроить метаданные проекта (это то что, как мы помним, сверху в pom файле).

Также можно сразу добавить зависимости в проект. Для этого нажимаем на Add Dependencies…

В результате откроется окно в котором можно найти и добавить в проект набор зависимостей(как уже упоминалось, в сприг бут наборы, а не отдельные зависимости):

Добавим такие наборы зависимостей: Web(добавляет поддержку Spring MVC, сервлетов и т.д.), jpa(поддержка Hibernate и др.) и MySql Driver(для возможности подключения к базе).

Всё мы сконфигурировали наш стартовый проект.

Spring Initializer настолько удобен, что перед скачиванием настроенного проекта его даже можно просмотреть прямо на сайте. То есть просмотреть структуру проекта и его файлы.

Нажимаем Download. Наше первое Spring Boot приложение должно скачаться на компьютер.

4. Ну и наверное самый важный момент из выше перечисленных, это то что скачиваемый Spring Boot проект уже сразу в себе содержит Tomcat сервер на котором мы запускаем скачанное Spring Boot приложение. То есть нам не нужно скачивать Tomcat отдельно и запускать через него спринг приложения, сервер уже СРАЗУ встроен в приложение, которое скачано с сайта Spring Initializer.

Также Spring Boot имеет различную другую функциональность, которая будет рассмотрена далее.


Spring Boot приложение.

Давайте добавим скачанное стартовое приложение в Eclipse. Для этого переходим по пути File -> Open Projects from File System и там указываем путь к папке скачанного проекта. Взглянем на структуру и файлы Spring Boot приложения.

Как видим, оно отличается от тех Спринг приложений, которые были раньше. Видим, что папка WEB-INF в src отсутствует и присутствуют некоторые новые папки и файлы.

mvnwдля запуска мавен проекта из командной строки. Автоматически подгружает мавен при запуске проекта если он не установлен или обновляет его.

То есть запустить приложение можно из консоли не открывая IDE. Давайте сделаем это.

Вводим в папке приложения mvnw package, что загружает мавен если его нет и создает jar файл:

В папке target должен появиться jar файлик нашего приложения. Его теперь можно запустить.

Далее вводим java -jar (имя приложения).jar и оно запускается

properties – здесь все настройки Spring Boot приложения. Настройки совершаются в формате свойств типа some.prop=”value” (то есть имя свойства и его значение). В примере ниже можно увидеть, что таким образом можно настраивать приложение в очень лаконичной форме. Можно с помощью свойства server.port изменить порт на котором запускается наше приложение, а например с помощью server.servlet.context-path можно изменить корневой элемент в адресе. Также можно увидеть, что здесь настраиваются уровни логирования, данные для подключения к БД, время жизни сессии и вообще все основные настройки Спринг Бут приложения происходят здесь в этом файле.

Можно также добавлять сюда кастомные свойства типа some.custom.prop="value" и можно внедрить их в строку.

Кто помнит из прошлых уроков их можно извлекать в классах приложения с помощью аннотации @Value("\${some.custom.prop}") и внедрять в String поле.

1#Lets watch on some of important settings. There are lots of them
2#we can change port of app. Now it will be 7070 instead of 8080
3server.port=7070
4#we can change context path – root element of addresses in project
5server.servlet.context-path=/firstSpringBootApp
6#can set lifetime of session
7server.servlet.session.timeout=120s
8#can set logging levels to folders of project
9logging.level.com.springboot=TRACE
10logging.level.org.hibernate=DEBUG
11#database info.
12spring.datasource.url=jdbc:mysql://localhost/storage
13spring.datasource.username=root
14spring.datasource.password=07998MSD
15spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

В папке static проекта хранятся все статические ресурсы, типа обычных html страниц,css файлов,картинок и т.д

В template хранятся динамические страницы типа JSP,Thyseleaf(аналог JSP)

pom файлик в Spring Boot приложении отличается некоторыми элементами от обычного веб приложения.

Здесь можно увидеть настройки, которые мы делали через интерфейс сайта Spring Initializr. То есть метаданные, версию спринг бута и также зависимости, которые мы включали в проект. Также здесь мы включим еще одну нужную зависимость devtools вручную, о который написано ниже.

1<?xml version="1.0" encoding="UTF-8"?>
2<project xmlns="http://maven.apache.org/POM/4.0.0"
3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
5         https://maven.apache.org/xsd/maven-4.0.0.xsd">
6    <modelVersion>4.0.0</modelVersion>
7    <parent>
8        <!--parent – для дефолтной конфигурации версий 
9        зависимостей и некоторых других настроек. 
10        Благодаря parent нам не нужно писать версии 
11        в зависимостях. Мы просто пишем версию 
12        spring-boot-starter-parent и автоматически 
13        устанавливаются версии зависимостей так 
14        чтобы они были совместимыми. Также этот тег 
15        определяет дефолтную версию джава, кодировку 
16        и т.д. Версию Java можно переопределить 
17        в properties как ниже. -->
18        <groupId>org.springframework.boot</groupId>
19        <artifactId>spring-boot-starter-parent</artifactId>
20        <version>3.1.5</version>
21        <relativePath/> <!--lookup parent from repository-->
22    </parent>
23    <groupId>com.SpringBootApps</groupId>
24    <artifactId>firstSpringBootApp</artifactId>
25    <version>0.0.1-SNAPSHOT</version>
26    <name>firstSpringBootApp</name>
27    <description>Demo project for Spring Boot</description>
28    <properties>
29        <java.version>17</java.version>
30    </properties>
31    <!-- Зависимости типа spring-boot-starter-... 
32    это как уже упоминалось наборы зависимостей. 
33    То есть например spring-boot-starter-web включает 
34    в себя зависимости Tomcat,json,hibernate,springmvc 
35    и т.д. Это удобно потому что все зависимости 
36    в наборе уже совместимы между собой и не нужно долго 
37    подбирать совместимые и вставлять в пом вручную. -->
38    <dependencies>
39        <dependency>
40            <groupId>org.springframework.boot</groupId>
41            <artifactId>
42                spring-boot-starter-data-jpa
43            </artifactId>
44        </dependency>
45        <dependency>
46            <groupId>org.springframework.boot</groupId>
47            <artifactId>spring-boot-starter-web</artifactId>
48        </dependency>
49        <dependency>
50            <groupId>com.mysql</groupId>
51            <artifactId>mysql-connector-j</artifactId>
52            <scope>runtime</scope>
53        </dependency>
54        <dependency>
55            <groupId>org.springframework.boot</groupId>
56            <artifactId>spring-boot-starter-test</artifactId>
57            <scope>test</scope>
58        </dependency>
59        <!-- devtools - Довольно важная зависимость чтобы 
60        сервер перезагружался каждый раз как мы написали новый 
61        код где-либо в приложении и сохранили изменения. 
62        Без нее пришлось бы перезагружать вручную. -->
63        <dependency>
64            <groupId>org.springframework.boot</groupId>
65            <artifactId>spring-boot-devtools</artifactId>
66            <scope>test</scope>
67        </dependency>
68    </dependencies>
69    <build>
70        <plugins>
71            <plugin>
72                <groupId>org.springframework.boot</groupId>
73                <artifactId>
74                    spring-boot-maven-plugin
75                </artifactId>
76            </plugin>
77        </plugins>
78    </build>
79</project>

Аннотация @SpringBootApplication в файле ниже состоит из трех аннотаций@EnableAutoConfiguration (нужна для включения автоматической конфигурации Spring Boot) и знакомых нам @ComponentScan и @Configuration (кто помнит использовались в Java версии файла applicationContext.xml для конфигурации бинов).

То есть через этот класс происходит конфигурация приложения, только она происходит за кулисами средствами Spring Boot, а нам ничего конфигурировать не нужно.

Создание бинов на основе классов, помеченных специальными аннотациями (@Component, @Controller, @Repository, @Service), происходит с помощью аннотации @ComponentScan.

Эта аннотация автоматически сканирует все подпапки той директории, в которой находится класс с методом main() (обычно это Application.java).

Вернитесь немного назад и посмотрите на структуру проекта ещё раз: файл с main находится на уровень выше папки controller, в которой лежит контроллер.

То же самое должно быть и с остальными директориями — service, dao и другими.
Все они должны быть вложены в ту же корневую папку или быть её поддиректориями, чтобы @ComponentScan смог обнаружить и зарегистрировать все нужные бины, и приложение корректно работало.

Запуск приложения, автоматическая конфигурация бинов, сканирование поддеректорий и другие настройки происходят методом run в main методе.

Запускать Spring Boot приложение можно как обычное Java приложение, то есть через метод main, что удобно (можно воспользоваться кнопкой Run в Eclipse IDE).

1package com.SpringBootApps.firstSpringBootApp;
2
3import org.springframework.boot.SpringApplication;
4import org.springframework.boot.autoconfigure.SpringBootApplication;
5
6@SpringBootApplication
7public class FirstSpringBootAppApplication {
8
9	public static void main(String[] args) {
10		SpringApplication.run(FirstSpringBootAppApplication.class, args);
11	}
12
13}

Давайте в классе контроллере создадим простенький обработчик для теста первого Спринг Бут приложения.

1package com.SpringBootApps.firstSpringBootApp.controller;
2
3import org.springframework.web.bind.annotation.GetMapping;
4
5import org.springframework.web.bind.annotation.RestController;
6public class MainController {
7    @GetMapping("/helloworld")
8    public String helloWorld() {
9        return "Hello world!!!";
10    }
11}

Запустим приложение через main файл и перейдем к обработчику по определенному адресу /helloworld.

Как видим, обработчик успешно прислал строку в ответ на запрос.

При этом можно увидеть, что обращение к обработчику идет через порт 7070 и через корневой путь firstSpringBootApp. Это было настроено, как мы помним, в файле application.properties


Дополнительные материалы

Официальная документация Spring Boot

Additional Material Icon
Divider

Углублённое изучение Spring Boot Autoconfiguration

Additional Material Icon
Divider

REST API Best Practices

Additional Material Icon

Следующие уроки

Создание Spring Boot CRUD-приложения

20
мин.

Similar Articles Icon
Divider

Создание Spring Boot Data CRUD-приложения

20
мин.

Similar Articles Icon
Divider

Создание Spring Boot Data Rest CRUD-приложения

19
мин.

Similar Articles Icon