HTML Diff
1 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Программирование на Spring Boot начинается с подготовки репозитория и заканчивается запуском приложения. В этом уроке мы пройдем этот путь - вы напишете свое первое работающее приложение на Spring Boot. Начнем с установки Spring Boot. Ее можно выполнить тремя способами:</p>
1 <p>Программирование на Spring Boot начинается с подготовки репозитория и заканчивается запуском приложения. В этом уроке мы пройдем этот путь - вы напишете свое первое работающее приложение на Spring Boot. Начнем с установки Spring Boot. Ее можно выполнить тремя способами:</p>
2 <ul><li><a>С помощью пакетных менеджеров</a>. Это самый удобный способ, если вы умеете пользоваться терминалом</li>
2 <ul><li><a>С помощью пакетных менеджеров</a>. Это самый удобный способ, если вы умеете пользоваться терминалом</li>
3 <li><a>С помощью сайта start.spring.io</a>. На этом сайте вы можете выбрать нужную конфигурацию и скачать архив с кодом или скопировать исходники прямо с сайта</li>
3 <li><a>С помощью сайта start.spring.io</a>. На этом сайте вы можете выбрать нужную конфигурацию и скачать архив с кодом или скопировать исходники прямо с сайта</li>
4 <li><a>С помощью нашего шаблона</a>. По ссылке вы найдете репозиторий, который мы подготовили специально для этого курса. В нем мы разместили начальный код приложения, а еще подключили и настроили разные полезные подсистемы, которые понадобятся для работы почти во всех случаях. Выбрав этот способ установки, вы сэкономите немало времени на настройке</li>
4 <li><a>С помощью нашего шаблона</a>. По ссылке вы найдете репозиторий, который мы подготовили специально для этого курса. В нем мы разместили начальный код приложения, а еще подключили и настроили разные полезные подсистемы, которые понадобятся для работы почти во всех случаях. Выбрав этот способ установки, вы сэкономите немало времени на настройке</li>
5 </ul><p>В целях обучения мы пойдем по пути ручной настройки - будем добавлять и разбирать каждый файл в проекте. Начнем с настройки Gradle-проекта. Создадим директорию<em>spring-example</em>и инициализируем Gradle-проект базового типа (basic) внутри нее:</p>
5 </ul><p>В целях обучения мы пойдем по пути ручной настройки - будем добавлять и разбирать каждый файл в проекте. Начнем с настройки Gradle-проекта. Создадим директорию<em>spring-example</em>и инициализируем Gradle-проект базового типа (basic) внутри нее:</p>
6 <p>Далее настроим<em>build.gradle.kts</em>. В качестве<em>group</em>можно указать любой префикс - например,<em>io.hexlet</em>:</p>
6 <p>Далее настроим<em>build.gradle.kts</em>. В качестве<em>group</em>можно указать любой префикс - например,<em>io.hexlet</em>:</p>
7 <p>Здесь мы видим три зависимости в виде<strong>starter-пакетов</strong>. Это метапакеты, то есть они не содержат код. Их задача - подключить целый набор пакетов, связанных по какому-то признаку. Рассмотрим несколько примеров:</p>
7 <p>Здесь мы видим три зависимости в виде<strong>starter-пакетов</strong>. Это метапакеты, то есть они не содержат код. Их задача - подключить целый набор пакетов, связанных по какому-то признаку. Рассмотрим несколько примеров:</p>
8 <ul><li>В базовый starter-пакет входит не только Spring Boot, но еще и пакет для логирования, пакет для автоконфигурирования и тому подобное</li>
8 <ul><li>В базовый starter-пакет входит не только Spring Boot, но еще и пакет для логирования, пакет для автоконфигурирования и тому подобное</li>
9 <li>В пакет<em>spring-boot-starter-test</em>входит все необходимое для тестирования</li>
9 <li>В пакет<em>spring-boot-starter-test</em>входит все необходимое для тестирования</li>
10 <li>В пакет<em>spring-boot-starter-web</em>входит все нужное для работы с HTTP</li>
10 <li>В пакет<em>spring-boot-starter-web</em>входит все нужное для работы с HTTP</li>
11 </ul><p>В будущих уроках мы еще не раз столкнемся с подобными пакетами, которые команда Spring Boot заботливо подготовила для нас.</p>
11 </ul><p>В будущих уроках мы еще не раз столкнемся с подобными пакетами, которые команда Spring Boot заботливо подготовила для нас.</p>
12 <p>Кроме указания зависимостей, Spring Boot поставляется с двумя плагинами Gradle:</p>
12 <p>Кроме указания зависимостей, Spring Boot поставляется с двумя плагинами Gradle:</p>
13 <ul><li>Плагин<em>dependency-management</em>упрощает работу с зависимостями. Обратите внимание, что зависимости указаны без версий. Работая с плагином, вы можете просто указать версию самого плагина, а он самостоятельно проставит эту же версию всем пакетам Spring Boot</li>
13 <ul><li>Плагин<em>dependency-management</em>упрощает работу с зависимостями. Обратите внимание, что зависимости указаны без версий. Работая с плагином, вы можете просто указать версию самого плагина, а он самостоятельно проставит эту же версию всем пакетам Spring Boot</li>
14 <li>Другой плагин добавляет команды необходимые для сборки, тестирования и запуска приложения на Spring Boot</li>
14 <li>Другой плагин добавляет команды необходимые для сборки, тестирования и запуска приложения на Spring Boot</li>
15 </ul><p>Подробнее с плагинами и командами мы познакомимся позже. На этом базовая настройка закончена, и теперь мы можем добавить код нашего приложения. Создадим соответствующую структуру директорий:</p>
15 </ul><p>Подробнее с плагинами и командами мы познакомимся позже. На этом базовая настройка закончена, и теперь мы можем добавить код нашего приложения. Создадим соответствующую структуру директорий:</p>
16 <p>Теперь добавим код приложения в файл<em>Application.java</em>:</p>
16 <p>Теперь добавим код приложения в файл<em>Application.java</em>:</p>
17 <p>В этом коде мы видим такие элементы:</p>
17 <p>В этом коде мы видим такие элементы:</p>
18 <ul><li>Метод main() - внутри него запускается Spring Boot</li>
18 <ul><li>Метод main() - внутри него запускается Spring Boot</li>
19 <li>Две аннотации, которые настраивают приложение:<ul><li>@SpringBootApplication выполняет автоконфигурацию приложения по установленным зависимостям. Например, стартер<em>web</em>добавляет Tomcat и Spring MVC, настраивая Spring Boot на работу в режиме веб-приложения</li>
19 <li>Две аннотации, которые настраивают приложение:<ul><li>@SpringBootApplication выполняет автоконфигурацию приложения по установленным зависимостям. Например, стартер<em>web</em>добавляет Tomcat и Spring MVC, настраивая Spring Boot на работу в режиме веб-приложения</li>
20 <li>@RestController отмечает классы, которые содержат обработку маршрутов</li>
20 <li>@RestController отмечает классы, которые содержат обработку маршрутов</li>
21 </ul></li>
21 </ul></li>
22 <li>Обработчик маршрута / - он определяется аннотацией @GetMapping и маршрутом, переданным в нее. Сам обработчик называется home(), но это не принципиально, потому что в Spring Boot нет ограничений на именование. Обработчик возвращает строку, которая вернется как тело HTTP-ответа, что удобно в простых ситуациях</li>
22 <li>Обработчик маршрута / - он определяется аннотацией @GetMapping и маршрутом, переданным в нее. Сам обработчик называется home(), но это не принципиально, потому что в Spring Boot нет ограничений на именование. Обработчик возвращает строку, которая вернется как тело HTTP-ответа, что удобно в простых ситуациях</li>
23 </ul><p>Запустим приложение. Для этого понадобится команда bootRun, добавленная плагином<em>org.springframework.boot</em>:</p>
23 </ul><p>Запустим приложение. Для этого понадобится команда bootRun, добавленная плагином<em>org.springframework.boot</em>:</p>
24 <p>Дальше есть два варианта - можно открыть в браузере<em>localhost</em></p>
24 <p>Дальше есть два варианта - можно открыть в браузере<em>localhost</em></p>
25 <p>или выполнить запрос через<em>curl</em>. В обоих случаях мы увидим на экране фразу<em>Hello World!</em>:</p>
25 <p>или выполнить запрос через<em>curl</em>. В обоих случаях мы увидим на экране фразу<em>Hello World!</em>:</p>
26 <p>Чтобы остановить приложение, можно набрать комбинацию клавиш Ctrl-С.</p>
26 <p>Чтобы остановить приложение, можно набрать комбинацию клавиш Ctrl-С.</p>
 
27 + <h2>Spring Boot DevTools</h2>
27 <p>Во время установки мы добавили в Gradle несколько пакетов, в том числе этот:</p>
28 <p>Во время установки мы добавили в Gradle несколько пакетов, в том числе этот:</p>
28 <p>Он включает автоматический рестарт приложения при его изменениях, что значительно упрощает и ускоряет работу. Пакет начинает работать автоматически после установки, но это не всегда срабатывает из-за особенностей работы разных IDE. Если вы столкнулись с проблемой,<a>откройте документацию</a>и выполните инструкции для вашей IDE.</p>
29 <p>Он включает автоматический рестарт приложения при его изменениях, что значительно упрощает и ускоряет работу. Пакет начинает работать автоматически после установки, но это не всегда срабатывает из-за особенностей работы разных IDE. Если вы столкнулись с проблемой,<a>откройте документацию</a>и выполните инструкции для вашей IDE.</p>