Баннер мобильный (3) Пройти тест

Spring Boot: что это за фреймворк и как на нем создавать приложения

Делаем приветствие на Spring Boot

Разбор

16 июня 2026

Поделиться

Скопировано
Spring Boot: что это за фреймворк и как на нем создавать приложения

Содержание

    Spring Boot — один из самых популярных инструментов для разработки приложений на Java. Он помогает быстрее запускать проекты, не тратить много времени на сложную настройку и сразу переходить к созданию полезной логики: веб-страниц, API, сервисов и серверной части приложений.

    В этой статье разберемся, что такое Spring Boot, какие задачи он решает и почему его часто выбирают для backend-разработки. Затем на практике создадим простое приложение для приветствия пользователя в двух вариантах: сначала с обработкой запроса на сервере, а затем с обработкой на стороне клиента. Это поможет понять, как устроено взаимодействие между браузером и приложением и чем отличаются эти два подхода.

    Что такое Spring Boot и зачем он нужен

    Spring — это мощный и популярный фреймворк для языка Java, который служит основой для создания корпоративных приложений. Он предлагает обширный набор инструментов и модулей для решения типовых задач: управления зависимостями, аспектно‑ориентированного программирования, работы с базами данных, создания веб‑приложений, интеграции с различными сервисами и многого другого. 

    Ключевая идея Spring — дать разработчикам гибкую и модульную платформу, где можно подключать только нужные компоненты, избегая избыточности. Фреймворк помогает структурировать код, делает его более тестируемым и поддерживаемым, а также упрощает взаимодействие между разными частями приложения.

    Spring Boot — это проект в рамках экосистемы Spring, призванный радикально упростить процесс разработки и развертывания Spring‑приложений. Он анализирует зависимости в проекте и сам настраивает соответствующие компоненты Spring.

    Spring Boot включает встроенные веб‑серверы, например, такие как Tomcat или Jetty, готовые стартовые наборы для быстрого подключения дополнительной функциональности (веб, безопасность, работа с базами данных и тому подобное), инструменты для мониторинга, поддержку внешних конфигураций и многое другое. Благодаря этому разработчик может запустить полноценное приложение с минимальным набором настроек и кода.

    Spring Boot существенно ускоряет разработку за счет автоматической настройки компонентов на основе имеющихся зависимостей, что особенно ценно для новичков — им не приходится глубоко погружаться в тонкости конфигурации Spring. Встроенный веб‑сервер позволяет запускать приложение как обычный JAR‑файл без отдельной установки сервера приложений, что упрощает развертывание. 

    Единые подходы к конфигурации, логированию и мониторингу делают приложения более предсказуемыми и удобными в поддержке, а совместимость с облачными платформами и инструментами контейнеризации, вроде Docker и Kubernetes, открывает широкие возможности для построения микросервисных архитектур.

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

    Создание проекта

    Для создания проекта можно воспользоваться вот этой страницей. На ней расположена форма, которая позволяет выбрать версию фреймворка, язык, зависимости и прочее. Вот так она выглядит:

    создание проекта в spring initializr
    Источник: автор статьи

    Если нажать на кнопку GENERATE, то будет скачан архив со всем необходимым для разработки. Для работы с проектами Spring Boot можно использовать самые разные редакторы и интегрированные среды разработки. Например, редактор Visual Studio Code от Microsoft со специальным пакетом расширений Spring Boot Extension Pack. 

    Мы же воспользуемся интегрированной средой разработки OpenIDE от отечественных разработчиков. Она создана на базе IntelliJ IDEA Community Edition. Скачать ее можно отсюда. Для пользователей операционных систем Windows и macOS процесс установки не должен вызвать каких-либо затруднений, поскольку среда предоставляется в виде стандартных установочных файлов .exe для Windows и .dmg для macOS. Все, что требуется сделать, — это запустить скачанный файл и следовать инструкциям установщика.

    Для пользователей Linux среда разработки предлагается в виде архива .tar.gz. После загрузки его нужно распаковать в удобное место, лучше всего в домашнюю директорию. После распаковки в этой директории появится новая папка, в которую следует перейти и найти в ней каталог bin. В этом каталоге находим и запускаем файл openide.sh или openide.

    Чтобы создать и работать с проектом Spring Boot нам понадобится плагин Amplicode. Его легко установить прямо из OpenIDE. Заходим в раздел «Плагины» и перейдя во вкладку «Маркетплейс» ищем в списке Amplicode:

    Шаг 2
    Источник: автор статьи

    Он у нас уже установлен. Теперь переходим в раздел «Проекты» и нажимаем там кнопку «Новый проект». В левой панели выбираем Spring Boot Project:

    Шаг 3
    Источник: автор статьи

    Заполняем все, как показано на скриншоте. Вводим имя проекта (Hello) в самое верхнее поле. Выбор языка и системы сборки должен быть таким:

    • Язык — Java
    • Система сборки — Maven

    Обычно, по умолчанию выставлены именно такие значения. Следующие три поля заполняются автоматически. В качестве JDK указан axiom-17, но должна подойти любая современная версия JDK. После заполнения нажимаем кнопку «Создать».

    Создание простого приложения с приветствием

    После нажатия на кнопку перед нами откроется наш проект:

    Шаг 4
    Источник: автор статьи

    На скриншоте выше открыт стартовый класс приложения. Он содержит главный метод main, который является точкой входа в приложение. Именно отсюда и начинается работа приложения. Здесь мы ничего менять не будем. 

    Наше приложение будет состоять из двух страниц. На первой странице будет пара строчек текста и ссылка на вторую страницу. Вторая страница будет посложнее. Она будет содержать поле для ввода, кнопку и область для вывода приветствия. Пользователь вводит свое имя, нажимает на кнопку и получает сообщение с приветствием.

    Для нашего приложения нам нужно будет создать несколько файлов, а именно файл контроллера и парочку файлов с разметкой интерфейса. Приложение сделаем в двух вариантах: первый вариант — это с обработкой запроса на стороне сервера, а второй вариант — на стороне клиента. Сначала займемся общими файлами для обоих вариантов.

    Настройка зависимостей

    В дереве проекта есть файл pom.xml, в котором есть раздел dependencies. В нем прописываются необходимые зависимости (модули) для проекта. Нам нужно добавить всего две записи. Между открывающим и закрывающим тегами <dependencies> и </dependencies> добавляем следующее:

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    Эта зависимость является основой для веб-приложений. Она позволяет использовать такие полезные вещи как GetMapping, PostMapping, RequestParam и другие. Как только мы добавим эту зависимость в pom.xml, справа появится вот такая кнопка:

    Шаг 5
    Источник: автор статьи

    Она запускает процесс синхронизации изменений. Запустим этот процесс после добавления еще одной зависимости:

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

    Этот модуль называется Thymeleaf. Thymeleaf — это шаблонизатор, который позволяет создавать и обрабатывать HTML-файлы с динамическим содержимым. Теперь можно нажать на кнопку синхронизации и двигаться дальше.

    Первая страница

    Эта страница будет описываться в файле index.html и этот файл нужно создать в папке templates, которая в свою очередь должна быть создана в папке resources. Последняя уже имеется в дереве проекта. Там же будет файл и для второй страницы, но о нем мы поговорим позже. В общем, вид директории resources в дереве проекта должен быть такой:

    Шаг 6
    Источник: автор статьи

    Содержимое файла index.html довольно простое:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Главная страница</title>
    </head>
    <body>
    <h1>Добро пожаловать!</h1>
    <h2>Вас приветствует Spring Boot.</h2>
    <a href="/hello">Перейти на страницу приветствия</a>
    </body>
    </html>

    Как видим, здесь всего лишь две строчки текста и ссылка на вторую страницу. Позже увидим, как это все выглядит в браузере.

    Контроллер и вторая страница в варианте с серверной обработкой

    Рядом с классом HelloApplication создадим папку controller. В ней у нас будет содержаться контроллер MainController, который нужен для обработки запросов и для возвращения результатов этой обработки. Если говорить более простым языком, то это своего рода «диспетчер», который решает, что показать пользователю, когда тот переходит по разным ссылкам в браузере или нажимает на различные кнопки. После добавления контроллера соответствующая часть дерева проекта должна выглядеть так:

    Шаг 7
    Источник: автор статьи

    Содержимое контроллера:

    package com.example.Hello.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    @Controller
    public class MainController {
        @GetMapping("/")
        public String home() {
            return "index";
        }
    
        @GetMapping("/hello")
        public String helloForm(Model model) {
            model.addAttribute("message", "");
            return "hello";
        }
    
        @PostMapping("/hello")
        public String handleHelloForm(@RequestParam(name = "userName", required = false, defaultValue = "Гость") String userName, Model model) {
            String message = "Привет, " + userName + "!";
            model.addAttribute("message", message);
            return "hello";
        }
    }

    После импортов необходимых пакетов, следует объявление класса с именем MainController, который содержит 3 метода. Первый метод с именем home отображает первую (главную) страницу index.html, а второй метод helloForm показывает нам вторую страницу hello.html. Третий метод handleHelloForm занимается выводом сообщения с приветствием. Код второй страницы:

    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>Приветствие</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <style>
            .container { max-width: 400px; margin: 50px auto; padding: 20px; }
            input[type="text"] { width: 100%; padding: 10px; margin: 10px 0; }
            button { padding: 10px 20px; background: #007bff; color: white; border: none; cursor: pointer; }
            .message { margin-top: 20px; padding: 15px; background: #e9ecef; border-radius: 5px; }
        </style>
    </head>
    <body>
    <div class="container">
        <h2>Введите ваше имя:</h2>
        <form th:action="@{/hello}" method="post">
            <input type="text" name="userName" placeholder="Ваше имя">
            <button type="submit">Поприветствовать</button>
        </form>
    
        <div th:if="${message != ''}" class="message">
            <p th:text="${message}"></p>
        </div>
    </div>
    </body>
    </html>

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

    Форма и область вывода содержатся в контейнере, к которому применены стили прописанные в теге style. Там же приведены отдельные стили, применяемые к полю ввода, кнопке и области вывода. 

    При нажатии на кнопку данные отправляются по адресу /hello. Об этом говорит атрибут формы th:action со значением @{/hello}. Этот атрибут из шаблонизатора Thymeleaf является динамическим аналогом стандартного атрибута action. 

    Данные записываются в переменную userName и отправляются в контроллер. Там создается фраза «Привет, » + userName + «!». Если переменная userName окажется пустой, то будет выведено сообщение «Привет, Гость!», так как значение «Гость» является значением параметра defaultValue метода handleHelloForm в контроллере. Готовая фраза возвращается в переменной message. Страница обновляется, а Thymeleaf видит, что в message что-то есть и показывает блок с текстом приветствия.

    Контроллер и вторая страница в варианте с клиентской обработкой

    В этом варианте обработка нажатия на кнопку будет происходить на стороне клиента, то есть в браузере. Обрабатывать все будет код на языке JavaScript, а значит кое-какой код в контроллере нам уже не понадобится. Код контроллера:

    package com.example.Hello.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    
    @Controller
    public class MainController {
        @GetMapping("/")
        public String home() {
            return "index";
        }
    
        @GetMapping("/hello")
        public String helloForm(Model model) {
            model.addAttribute("message", "");
            return "hello";
        }
    }

    Как видим, из контроллера удален метод handleHelloForm и сопутствующие импорты. Таким образом, в классе остались только 2 метода. Код второй страницы:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Приветствие</title>
        <meta charset="UTF-8" />
        <style>
            .container { max-width: 400px; margin: 50px auto; padding: 20px; }
            input[type="text"] { width: 100%; padding: 10px; margin: 10px 0; }
            button { padding: 10px 20px; background: #007bff; color: white; border: none; cursor: pointer; }
            .message { margin-top: 20px; padding: 15px; background: #e9ecef; border-radius: 5px; }
        </style>
    </head>
    <body>
    <div class="container">
        <h2>Введите ваше имя:</h2>
        <input type="text" id="userName" placeholder="Ваше имя">
        <button onclick="showMessage()">Поприветствовать</button>
    
        <div id="messageArea"></div>
    </div>
    
    <script>
        function showMessage() {
            const userName = document.getElementById('userName').value;
            const messageArea = document.getElementById('messageArea');
    
            let message = 'Привет, ';
            if (userName.trim() === '') {
                message += 'Гость!';
            } else {
                message += userName + '!';
            }
    
            messageArea.innerHTML = `<div class="message"><p>${message}</p></div>`;
        }
    </script>
    </body>
    </html>

    Форма здесь уже не используется. Тут все просто: единственная функция showMessage, которая содержится внутри тега script получает содержимое поля ввода и если оно пустое, то выводит сообщение «Привет, Гость!». В противном случае выводится приветствие с содержимым поля ввода. Далее попробуем запустить наш проект и, наконец, увидеть, как он выглядит.

    Запуск проекта

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

    Шаг 8
    Источник: автор статьи

    Нажимаем ее и после небольшого ожидания в консоли видим следующее:

    Шаг 9
    Источник: автор статьи

    И все! Больше мы ничего здесь не увидим. В консоли нам сообщают, что запущен сервер Tomcat и наше приложение успешно на нем развернуто. Чтобы увидеть приложение надо перейти по адресу http://localhost:8080/, используя для этого любой доступный браузер. Переходим по адресу и видим первую страницу нашего приложения:

    Шаг 10
    Источник: автор статьи

    Переходим на страницу приветствия:

    Шаг 11
    Источник: автор статьи

    Ничего пока не вводим в поле и жмем на кнопку:

    Шаг 12
    Источник: автор статьи

    Теперь вводим имя и снова нажимаем на кнопку:

    Шаг 13
    Источник: автор статьи

    Все работает, как надо!

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии