Hello Spring Boot

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

Создание приложения

Spring boot можно использовать и с maven и с gradle, но так как про gradle я ещё не писал, будем использовать maven. Создать новое приложение можно обычным для maven путём — либо из архетипа, либо вручную написав pom.xml. Однако, у Spring boot есть способ ещё лучше и проще: генератор проектов на https://start.spring.io/

Достаточно вписать параметры приложения, выбрать требуемые библиотеки и скачать готовое пустое приложение.

Простое Spring Boot приложение

Что же входит в минимальное Spring Boot приложение? В первую очередь — pom.xml, который включает в себя зависимости от Spring Boot, плагин Spring Boot и, что самое главное, объявляет проект дочерним модулем Spring Boot.

Spring Boot использует концепцию стартеров. Каждый стартер — библиотека Spring Boot, которая добавляет к приложению тот или иной функционал. Стартер обычно имеет в зависимостях все необходимые библиотеки, так что из не требуется добавлять явно, плюс стартер автоматически настраивает эти библиотеки. Например -starter-web добавляет поддержку Spring MVC и REST, автоматически настраивает их и автоматически включает веб сервер.

Кроме того, в приложении SpringBoot всегда есть класс приложения и он, обычно, всегда выглядит примерно одинаково:

Как можно видеть, это стандартный java entry point, с которого начинается исполнение java программы. Сам класс аннотирован @SpringBootApplication, что и делает его классом приложения и фактически включает Spring boot. Единственная строка кода в классе запускает Spring Boot. Как видно, это гораздо проще классической конфигурации Spring.

Наконец, класс теста, который уже настроен на загрузку контекста Spring с использованием Spring Boot:

Поддержку модульного тестирования добавляет стартер spring-boot-starter-test.

Использование Spring Boot

Пустое приложение сразу готово к сборке и запуску, но радости оно не несёт. Давайте попробуем добавить классический «Hello, World!». Для этого создадим два класса, которые будут определять кто здоровается и генерировать строку.  Такая сложная конструкция, конечно, не требуется для столь простой задачи, но покажет как все работает.

В классах используются стандартные возможности Spring по внедрению зависимостей.  Вновь написанный код конечно же надо протестировать:

Обратите внимание, что, несмотря на то, что зависимости от junit и hamcrest не были явно объявлены, они всё равно доступны, так как их добавляет spring-boot-starter-test.

Наконец используем эти классы по назначению:

Метод run() классов, реализующих интерфейс ApplicationRunner, будет автоматически вызван после создания контекста. Это не самый лучший метод использования Spring Boot, но для примера сойдёт, а методы получше мы рассмотрим в следующий раз.

Запустим приложение, чтобы убедиться, что всё работает:

Код примера доступен на github