Spring initializer что это
Перейти к содержимому

Spring initializer что это

  • автор:

Создание приложений с Spring Boot

Этот урок показывает пример того, как Spring Boot помогает вам ускорить и облегчить разработку приложений. Из учебных материалов вы увидите случаи использования Spring Boot. Если вы хотите создать проект на его основе, то посетите Spring Initializr, заполните онформацию о проекте, выберите опции и вы сможете загрузить файл сборки Maven, либо Gradle, либо как проект в виде zip-файла.

Что вы создадите

Вы создадите простое web-приложение с Spring Boot и добавите в него несколько полезных сервисов.

Что вам потребуется

  • Примерно 15 минут свободного времени
  • Любимый текстовый редактор или IDE
  • JDK 6 и выше
  • Gradle 1.11+ или Maven 3.0+
  • Вы также можете импортировать код этого урока, а также просматривать web-страницы прямо из Spring Tool Suite (STS), собственно как и работать дальше из него.

Как проходить этот урок

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

Чтобы начать с нуля, перейдите в Настройка проекта.

  • Загрузите и распакуйте архив с кодом этого урока, либо кнонируйте из репозитория с помощью Git: git clone https://github.com/spring-guides/gs-spring-boot.git
  • Перейдите в каталог gs-spring-boot/initial

Когда вы закончите, можете сравнить получившийся результат с образцом в gs-spring-boot/complete .

Настройка проекта

Для начала вам необходимо настроить базовый скрипт сборки. Вы можете использовать любую систему сборки, которая вам нравится для сборки проетов Spring, но в этом уроке рассмотрим код для работы с Gradle и Maven. Если вы не знакомы ни с одним из них, ознакомьтесь с соответсвующими уроками Сборка Java-проекта с использованием Gradle или Сборка Java-проекта с использованием Maven.

Создание структуры каталогов

В выбранном вами каталоге проекта создайте следующую структуру каталогов; к примеру, командой mkdir -p src/main/java/hello для *nix систем:

└── src └── main └── java └── hello

Создание файла сборки Gradle

Ниже представлен начальный файл сборки Gradle. Файл pom.xml находится здесь. Если вы используете Spring Tool Suite (STS), то можете импортировать урок прямо из него.

Если вы посмотрите на pom.xml , вы найдете, что указана версия для maven-compiler-plugin. В общем, это не рекомендуется делать. В данном случае он предназначен для решения проблем с нашей CI системы, которая по умолчанию имеет старую(до Java 5) версию этого плагина.

buildscript < repositories < mavenCentral() >dependencies < classpath("org.springframework.boot:spring-boot-gradle-plugin:1.1.8.RELEASE") >> apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'spring-boot' jar < baseName = 'gs-spring-boot' version = '0.1.0' >repositories < mavenCentral() >dependencies < // tag::jetty[] compile("org.springframework.boot:spring-boot-starter-web") < exclude module: "spring-boot-starter-tomcat" >compile("org.springframework.boot:spring-boot-starter-jetty") // end::jetty[] // tag::actuator[] compile("org.springframework.boot:spring-boot-starter-actuator") // end::actuator[] testCompile("junit:junit") > task wrapper(type: Wrapper)

Spring Boot gradle plugin предоставляет множество удобных возможностей:

  • Он собирает все jar’ы в classpath и собирает единое, исполняемое «über-jar», что делает более удобным выполнение и доставку вашего сервиса
  • Он ищет public static void main() метод, как признак исполняемого класса
  • Он предоставляет встроенное разрешение зависимостей, с определенными номерами версий для соответсвующих Spring Boot зависимостей. Вы можете переопределить на любые версии, какие захотите, но он будет по умолчанию для Boot выбранным набором версий

Узнайте, что вы можете делать с Spring Boot

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

  • Требуется Spring MVC? Некоторые определенные бины вам почти всегда необходимы и Spring Boot добавит для них автоматически. Spring MVC приложению также необходим сервлет контейнер, поэтому Spring Boot автоматически настроит встроенный Tomcat
  • Требуется Jetty? Если так, то скорее всего вам не нужен Tomcat, а вместо него нужен встроенный Jetty. Spring Boot обработает эту задачу для вас
  • Требуется Thymeleaf? Для этого несколько бинов должны всегда быть добавлены в контекст вашего приложения; Spring Boot добавит их для вас

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

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

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

Теперь вы можете создать web контроллер для простого web приложения.

package hello; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController < @RequestMapping("/") public String index() < return "Greetings from Spring Boot!"; >>

Класс помечен как @RestController , означая, что он готов к использованию Spring MVC для обработки запросов. RequestMapping соответствует / метода index() . При вызове из браузера или использовании curl в командной строке, метод возвращает чистый текст. Т.к. @RestController сочетает в себе @Controller и @ResponseBody , две аннотации в результате web запросов возвращают данные, а не представление.

Создание Application класса

Здесь вы создаете Application класс с компонентами:

package hello; import java.util.Arrays; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @EnableAutoConfiguration @ComponentScan public class Application < public static void main(String[] args) < ApplicationContext ctx = SpringApplication.run(Application.class, args); System.out.println("Let's inspect the beans provided by Spring Boot:"); String[] beanNames = ctx.getBeanDefinitionNames(); Arrays.sort(beanNames); for (String beanName : beanNames) < System.out.println(beanName); >> >
  • @Configuration помечает класс как источник определения бинов для контекста приложения
  • @EnableAutoConfiguration говорит Spring Boot о запуске добавления бинов в соответствии с содержанием classpath и других бинов, а также различных параметров настроек
  • Обычно вы добавили бы @EnableMVC для Spring MVC, но Spring Boot добавляет её автоматически, когда видит spring-webmvc в classpath. Этот флаг помечает приложение как web приложение и активирует ключевые действия, такие как настройка DispatcherServlet
  • @ComponentScan говорит Spring о том, чтобы просмотреть все компоненты, конфигурации и сервисы в пакете hello , сто позволяет ему найти HelloController

Метод main() используется Spring Boot методом SpringApplication.run() для запуска приложения. Вы обратили внимание, что нет ни одной строчки на XML? Файла web.xml нет вообще. Это приложение на 100% из чистой Java и вы ничего не делали для настройки какого-либо инструмента или инфраструктуры.

Метод run() возвращает ApplicationContext и этому приложению отдаются все бины, которые были созданы вашим приложением или автоматически добавлены благодаря Spring Boot. Метод сортирует бины и печатает их имена.

Запуск приложения

Для запуска приложения выполните:

./gradlew build && java -jar build/libs/gs-spring-boot-0.1.0.jar

Если вы используете Maven, то:

mvn package && java -jar target/gs-spring-boot-0.1.0.jar

Вы должны увидеть примерно такое:

Let's inspect the beans provided by Spring Boot: application beanNameHandlerMapping defaultServletHandlerMapping dispatcherServlet embeddedServletContainerCustomizerBeanPostProcessor handlerExceptionResolver helloController httpRequestHandlerAdapter messageSource mvcContentNegotiationManager mvcConversionService mvcValidator org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration$DispatcherServletConfiguration org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration$EmbeddedTomcat org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration org.springframework.boot.context.embedded.properties.ServerProperties org.springframework.context.annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor org.springframework.context.annotation.internalAutowiredAnnotationProcessor org.springframework.context.annotation.internalCommonAnnotationProcessor org.springframework.context.annotation.internalConfigurationAnnotationProcessor org.springframework.context.annotation.internalRequiredAnnotationProcessor org.springframework.web.servlet.config.annotation.DelegatingWebMvcConfiguration propertySourcesBinder propertySourcesPlaceholderConfigurer requestMappingHandlerAdapter requestMappingHandlerMapping resourceHandlerMapping simpleControllerHandlerAdapter tomcatEmbeddedServletContainerFactory viewControllerHandlerMapping

Вы можете явно видеть org.springframework.boot.autoconfigure бины. А также tomcatEmbeddedServletContainerFactory .

$ curl localhost:8080 Greetings from Spring Boot!

Добавление сервисов бизнес-уровня

Если вы создаете web-сайт для вашего бизнеса, то вам скорее всего необходимо добавить некоторые сервисы для управления. Spring Boot предоставляет несколько таких «из коробки» в одном из своих модулей, таких как состояние, аудит, бины и другие.

Добавьте это в список зависимостей вашего файла сборки:

compile("org.springframework.boot:spring-boot-starter-actuator")

Если вы используете Maven, то добавьте это в список зависимостей:

 org.springframework.boot spring-boot-starter-actuator 

Затем перезапустите приложение:

./gradlew build && java -jar build/libs/gs-spring-boot-0.1.0.jar

Если вы используете Maven, то:

mvn package && java -jar target/gs-spring-boot-0.1.0.jar

Вы увидите новый набор RESTful точек выхода, добавленных в приложение. Это сервисы управления, предоставленные Spring Boot:

2014-06-03 13:23:28.119 . : Mapped "<[/error],methods=[],params=[],headers=[],consumes. 2014-06-03 13:23:28.119 . : Mapped "<[/error],methods=[],params=[],headers=[],consumes. 2014-06-03 13:23:28.136 . : Mapped URL path [/**] onto handler of type [class org.spri. 2014-06-03 13:23:28.136 . : Mapped URL path [/webjars/**] onto handler of type [class . 2014-06-03 13:23:28.440 . : Mapped "<[/info],methods=[GET],params=[],headers=[],consum. 2014-06-03 13:23:28.441 . : Mapped "<[/autoconfig],methods=[GET],params=[],headers=[]. 2014-06-03 13:23:28.441 . : Mapped "<[/mappings],methods=[GET],params=[],headers=[],co. 2014-06-03 13:23:28.442 . : Mapped "<[/trace],methods=[GET],params=[],headers=[],consu. 2014-06-03 13:23:28.442 . : Mapped "<[/env/],methods=[GET],params=[],headers=. 2014-06-03 13:23:28.442 . : Mapped "<[/env],methods=[GET],params=[],headers=[],consume. 2014-06-03 13:23:28.443 . : Mapped "<[/configprops],methods=[GET],params=[],headers=[]. 2014-06-03 13:23:28.443 . : Mapped "<[/metrics/],methods=[GET],params=[],head. 2014-06-03 13:23:28.443 . : Mapped "<[/metrics],methods=[GET],params=[],headers=[],con. 2014-06-03 13:23:28.444 . : Mapped "<[/health],methods=[GET],params=[],headers=[],cons. 2014-06-03 13:23:28.444 . : Mapped "<[/dump],methods=[GET],params=[],headers=[],consum. 2014-06-03 13:23:28.445 . : Mapped "<[/beans],methods=[GET],params=[],headers=[],consu.

Также есть /shutdown , но она видна по умолчанию только через JMX. Для включения её к общедоступным, добавьте endpoints.shutdown.enabled=true в ваш application.properties файл.

это легко проверить по состоянию приложения:

$ curl localhost:8080/health ok

Вы можете попытаться вызвать завершение работы через curl:

$ curl -X POST localhost:8080/shutdown

Т.к. мы не включили его, запрос блокирован, потому что его не существует.

Более подробную информацию о каждом из этих REST сервисов и о том, как вы можете настраивать под себя в application.properties , вы можете прочитать в документации.

Просмотр Spring Boot starters

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

Но Spring Boot делает ещё большее. Он поддерживает не только традиционное использование WAR файлов, но также сборку исполняемых JAR файлов, благодаря модулю загрузчика Spring Boot. Различные уроки демонстрируют эту двойную поддержку через spring-boot-gradle-plugin и spring-boot-maven-plugin .

ко всему прочему, Spring Boot поддерживает Groovy, позволяя вам создавать Spring MVC приложения в небольшом и единственном файле.

Создайте новый файл app.groovy и поместите в него приведенный ниже код:

@RestController class ThisWillActuallyRun < @RequestMapping("/") String home() < return "Hello World!" >>

Не имеет значения, где расположен файл. Можете даже гордится приложением, как мало нужно всего лишь для единственного твита!

$ spring run app.groovy

Предполагается, что вы завершите предыдущее приложение во избежание конфликта портов.

Давайте проверим, что получилось:

$ curl localhost:8080 Hello World!

Spring Boot динамически добавляет аннотации к вашему коду и использует Groovy Grape для подтягивания необходимых для запуска приложения библиотек. Смотрите документацию, если хотите копнуть шлубже.

Итог

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

С оригинальным текстом урока вы можете ознакомиться на spring.io.

Spring Initializr: создаём maven-проект на Java

Чтобы каждый раз не создавать с нуля Spring проект на Java и не искать последние версии зависимостей, можно воспользоваться сервисом Spring Initializr, который предоставляет интерфейс для генерации заготовки проекта с добавлением стандартных зависимостей. Их можно конфигурировать в зависимости от ваших потребностей. В качестве сборщика проекта выберем Maven, и Spring Initializr автоматически сгенерирует скрипт сборки. Затем мы скачаем эту заготовку и запустим её в IntelliJ Idea от JetBrains.

Поскольку данный процесс лучше показывать визуально, я снял подробное видео и выложил его на YouTube.

Кстати, подписывайтесь на канал, т.к. это по сути одно из первых моих видео.

Spring Initializr и IntelliJ IDEA

В этой статье подробно расписано о том, как создавать новый проект с помощью Spring Initializr в Intellij IDEA.

Создание новых проектов с помощью Spring Initializr поддерживается только в Ultimate версии IDEA, в Community версии такой возможности по умолчанию нет, но можно установить плагин стороннего разработчика, если есть желание. Плагин стороннего разработчика выглядит очень похоже.

Далее используется Ultimate версия IntelliJ IDEA. Да, это платная версия, но вам выдадут на неё лицензию на работе, скорее всего, так что лично вам платить не придётся.

Создаём новый проект на Spring. Для этого в Ultimate версии IntelliJ IDEA кликаем на File ➣ New ➣ Project…

Создание нового проекта в IntelliJ IDEA

Если вы используете многомодульный проект, как это сделано в книге «Java в динамике (2022)», то нужно создавать новый модуль внутри уже существующего проекта кликнув на File ➣ New ➣ Module…

IntelliJ IDEA new module

В открывшемся диалоговом окне выберите тип проекта Spring Initializr и заполните значения как на изображении ниже:

IDEA new spring initializr project

Name — название проекта

  • Location — каталог на диске, где будут храниться файлы проекта.
  • Language — язык проекта. Нужно выбрать Java.
  • Type — тип менеджера зависимостей. Чаще всего используется Maven, его и нужно выбрать.
  • Group — имя группы Maven-проекта.
  • Artifact — название артефакта. Конечный JAR-файл будет иметь название -.jar
  • Package name — имя пакета, которое будет создано для проекта.
  • Project SDK — выберите 17-ую версию, по которой и написана эта книга
  • Java — выберите 17.
  • Packaging — выберите jar. Раньше приложения Spring деплоились внутри контейнеров сервлетов наподобие Apache Tomcat, Wildfly, WebSphere и аналогичных. В одном экземпляре контейнера севрлетов деплоилось несколько веб-приложений (несколько war-файлов). В большинстве современных проектов используется Spring Boot, где конечные jar уже содержат внутри себя контейнер сервлетов и сами настраивают ваше приложение на запуск.

После заполнения полей кликните по кнопке Next. Откроется окно выбора зависимостей будущего проекта. Разные проекты могут использовать разные зависимости. Для нашего примера в левом дереве нужно проставить галочки на четырёх пунктах:

Spring Initializr dependencies

  • Spring Reactive Web (мы будем писать проект в реактивном стиле с Spring Web Flux).
  • Spring Data R2DBC (для доступа к базе данных в реактивном стиле).
  • H2 Database (встроенная база данных).
  • Validation (для реализации функции проверки).

Кликните Finish.

Введение в Spring Boot: создание простого REST API на Java

Из-за громоздкой конфигурации зависимостей настройка Spring для корпоративных приложений превратилась в весьма утомительное и подверженное ошибкам занятие. Особенно это относится к приложениям, которые используют также несколько сторонних библиотек

Каждый раз, создавая очередное корпоративное Java-приложение на основе Spring, вам необходимо повторять одни и те же рутинные шаги по его настройке:

  • В зависимости от типа создаваемого приложения (Spring MVC, Spring JDBC, Spring ORM и т.д.) импортировать необходимые Spring-модули
  • Импортировать библиотеку web-контейнеров (в случае web-приложений)
  • Импортировать необходимые сторонние библиотеки (например, Hibernate, Jackson), при этом вы должны искать версии, совместимые с указанной версией Spring
  • Конфигурировать компоненты DAO, такие, как: источники данных, управление транзакциями и т.д.
  • Конфигурировать компоненты web-слоя, такие, как: диспетчер ресурсов, view resolver
  • Определить класс, который загрузит все необходимые конфигурации

1. Представляем Spring Boot

Авторы Spring решили предоставить разработчикам некоторые утилиты, которые автоматизируют процедуру настройки и ускоряют процесс создания и развертывания Spring-приложений, под общим названием Spring Boot

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

2. Особенности Spring Boot

Spring Boot обладает большим функционалом, но его наиболее значимыми особенностями являются: управление зависимостями, автоматическая конфигурация и встроенные контейнеры сервлетов

2.1. Простота управления зависимостями

Чтобы ускорить процесс управления зависимостями, Spring Boot неявно упаковывает необходимые сторонние зависимости для каждого типа приложения на основе Spring и предоставляет их разработчику посредством так называемых starter-пакетов (spring-boot-starter-web, spring-boot-starter-data-jpa и т.д.)

Starter-пакеты представляют собой набор удобных дескрипторов зависимостей, которые можно включить в свое приложение. Это позволит получить универсальное решение для всех, связанных со Spring технологий, избавляя программиста от лишнего поиска примеров кода и загрузки из них требуемых дескрипторов зависимостей (пример таких дескрипторов и стартовых пакетов будет показан ниже)

Например, если вы хотите начать использовать Spring Data JPA для доступа к базе данных, просто включите в свой проект зависимость spring-boot-starter-data-jpa и все будет готово (вам не придется искать совместимые драйверы баз данных и библиотеки Hibernate)

Если вы хотите создать Spring web-приложение, просто добавьте зависимость spring-boot-starter-web, которая подтянет в проект все библиотеки, необходимые для разработки Spring MVC-приложений, таких как spring-webmvc, jackson-json, validation-api и Tomcat

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

Следовательно, при использовании Spring Boot, файл pom.xml содержит намного меньше строк, чем при использовании его в Spring-приложениях

Обратитесь к документации, чтобы ознакомиться со всеми Spring Boot starter-пакетами

2.2. Автоматическая конфигурация

Второй превосходной возможностью Spring Boot является автоматическая конфигурация приложения

После выбора подходящего starter-пакета, Spring Boot попытается автоматически настроить Spring-приложение на основе добавленных вами jar-зависимостей

Например, если вы добавите Spring-boot-starter-web, Spring Boot автоматически сконфигурирует такие зарегистрированные бины, как DispatcherServlet, ResourceHandlers, MessageSource

Если вы используете spring-boot-starter-jdbc, Spring Boot автоматически регистрирует бины DataSource, EntityManagerFactory, TransactionManager и считывает информацию для подключения к базе данных из файла application.properties

Если вы не собираетесь использовать базу данных, и не предоставляете никаких подробных сведений о подключении в ручном режиме, Spring Boot автоматически настроит базу в памяти, без какой-либо дополнительной конфигурации с вашей стороны (при наличии H2 или HSQL библиотек)

Автоматическая конфигурация может быть полностью переопределена в любой момент с помощью пользовательских настроек

2.3. Встроенная поддержка сервера приложений — контейнера сервлетов

Каждое Spring Boot web-приложение включает встроенный web-сервер. Посмотрите на список контейнеров сервлетов, которые поддерживаются "из коробки"

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

Если вам нужно использовать отдельный HTTP-сервер, для этого достаточно исключить зависимости по умолчанию. Spring Boot предоставляет отдельные starter-пакеты для разных HTTP-серверов

Создание автономных web-приложений со встроенными серверами не только удобно для разработки, но и является допустимым решением для приложений корпоративного уровня и становится все более полезно в мире микросервисов. Возможность быстро упаковать весь сервис (например, аутентификацию пользователя) в автономном и полностью развертываемом артефакте, который также предоставляет API — делает установку и развертывание приложения значительно проще

3. Требования к установке Spring Boot

Для настройки и запуска Spring Boot приложений требуется следующее:

4. Создание Spring Boot приложения

Теперь давайте перейдем к практике и реализуем очень простой REST API для приема платежей, используя возможности Spring Boot

4.1. Создание web-проекта с использованием Maven

Создайте Maven-проект в используемой вами IDE, назвав его SpringBootRestService

Обязательно используйте версию Java 8+, поскольку Spring Boot не работает с более ранними версиями

4.2. Конфигурация pom.xml

Вторым шагом необходимо настроить Spring Boot в файле pom.xml

Все приложения Spring Boot конфигурируются от spring-boot-starter-parent, поэтому перед дальнейшим определением зависимостей, добавьте starter-parent следующим образом:

 org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASE 

Т.к. мы создаем REST API, то необходимо в качестве зависимости использовать spring-boot-starter-web, которая неявно определяет все остальные зависимости, такие как spring-core, spring-web, spring-webmvc, servlet api, и библиотеку jackson-databind, поэтому просто добавьте в pom.xml следующее:

 org.springframework.boot spring-boot-starter-web 

Теперь следующие jar-библиотеки автоматически импортируются в ваш проект:

image

Следующий шаг — добавляем Spring Boot плагин:

   org.springframework.boot spring-boot-maven-plugin   

Последний шаг — сделать так, чтобы Maven генерировал исполняемый jar-файл при сборке:

Ниже приведен полный файл pom.xml:

  4.0.0 springboot.topjava.ru SpringBootRestService 1.0 jar 1.8 1.8  org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASE   org.springframework.boot spring-boot-starter-web     org.springframework.boot spring-boot-maven-plugin    

Как видите, используя одну зависимость, мы можем создать полностью функциональное web-приложение

4.3. Создание ресурсов REST

Теперь мы собираемся создать контроллер платежей вместе с POJO-классами для запросов и ответов

Напишем класс запроса платежа:

package springboot.topjava.ru; public class PaymentRequest < private int userId; private String itemId; private double discount; public String getItemId() < return itemId; >public void setItemId(String itemId) < this.itemId = itemId; >public double getDiscount() < return discount; >public void setDiscount(double discount) < this.discount = discount; >public int getUserId() < return userId; >public void setUserId(int userId) < this.userId = userId; >>

А также класс, обрабатывающий базовый ответ, возвращаемый нашим сервисом:

package springboot.topjava.ru; public class BaseResponse < private final String status; private final Integer code; public BaseResponse(String status, Integer code) < this.status = status; this.code = code; >public String getStatus() < return status; >public Integer getCode() < return code; >>

А теперь создадим контроллер:

package springboot.topjava.ru; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/payment") public class PaymentController < private final String sharedKey = "SHARED_KEY"; private static final String SUCCESS_STATUS = "success"; private static final String ERROR_STATUS = "error"; private static final int CODE_SUCCESS = 100; private static final int AUTH_FAILURE = 102; @GetMapping public BaseResponse showStatus() < return new BaseResponse(SUCCESS_STATUS, 1); >@PostMapping("/pay") public BaseResponse pay(@RequestParam(value = "key") String key, @RequestBody PaymentRequest request) < final BaseResponse response; if (sharedKey.equalsIgnoreCase(key)) < int userId = request.getUserId(); String itemId = request.getItemId(); double discount = request.getDiscount(); // Process the request // . // Return success response to the client. response = new BaseResponse(SUCCESS_STATUS, CODE_SUCCESS); >else < response = new BaseResponse(ERROR_STATUS, AUTH_FAILURE); >return response; > >

4.4. Создание основного класса приложения

Этот последний шаг заключается в создании класса конфигурации и запуска приложения. Spring Boot поддерживает новую аннотацию @SpringBootApplication, которая эквивалентна использованию @Configuration, @EnableAutoConfiguration и @ComponentScan с их атрибутами по умолчанию

Таким образом, вам просто нужно создать класс, аннотированный с помощью @SpringBootApplication, а Spring Boot включит автоматическую настройку и отсканирует ваши ресурсы в текущем пакете:

package springboot.topjava.ru; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Application < public static void main(String[] args) < SpringApplication.run(Application.class, args); >>

5. Развертывание приложения Spring Boot

Теперь давайте воспользуемся третьей замечательной особенностью Spring Boot — это встроенный сервер. Все, что нам нужно сделать — это создать исполняемый jar-файл с помощью Maven и запустить его, как обычное автономное приложение:

  • Войдите в режим командной строки (команда cmd), перейдите в папку с pom.xml и введите команду mvn clean package
  • Maven cгенерирует исполняемый jar-файл с именем SpringBootRestService-1.0.jar
  • Перейдите в папку cd target
  • Затем запустите jar-файл: java -jar SpringBootRestService-1.0.jar
  • Перейдите в браузере по адресу http://localhost:8080/payment

Наш REST API запущен и готов обслуживать запросы через порт 8080 (по умолчанию)

В этой статье мы рассмотрели возможности Spring Boot и создали полностью рабочий пример с использованием встроенного сервера

В переводе обновили информацию:
  • Spring-boot-starter-parent изменили версию с 1.5.8.RELEASE на 2.1.1.RELEASE и соответственно был обновлен список библиотек, которые подтягивает Maven
  • Убрали объявления репозиториев Spring, зависимости подтягиваются из центрального репозитория
  • В классе BaseResponse поля сделали final, добавили конструктор и убрали сеттеры
  • В контроллере PaymentController ввели метод showStatus() с @GetMapping для тестирования приложения в браузере
  • Заменили @RequestMapping в методах на @GetMapping/@PostMapping
  • Также были внесены правки по развертыванию приложения с командной строки

UPDATE:

Как заметил Lure_of_Chaos, теперь уже все можно сделать автоматически через SPRING INITIALIZR. Причем не выходя из любимой JetBrains IntelliJ IDEA.

  • java
  • spring boot
  • maven
  • web-разработка
  • spring-boot-starter
  • pom.xml
  • Spring Framework
  • создание приложения
  • rest
  • SpringBootApplication

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *