- Введение в Spring Boot: создание простого REST API на Java
- 1. Представляем Spring Boot
- 2. Особенности Spring Boot
- 2.1. Простота управления зависимостями
- 2.2. Автоматическая конфигурация
- 2.3. Встроенная поддержка сервера приложений — контейнера сервлетов
- 3. Требования к установке Spring Boot
- 4. Создание Spring Boot приложения
- 4.1. Создание web-проекта с использованием Maven
- 4.2. Конфигурация pom.xml
- 4.3. Создание ресурсов REST
- 4.4. Создание основного класса приложения
- 5. Развертывание приложения Spring Boot
- В переводе обновили информацию:
- UPDATE:
- Взаимодействие RESTful-сервиса с Spring for Android
- Что вы создадите
- Что вам потребуется
- Создание Android-проекта
- Создание Android Manifest
- Создание строковых ресурсов
- Создание разметки
- Создание меню
- Создание класса представления
- Добавление зависимостей
- Создание activity
- Запуск клиента
Введение в 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 следующим образом:
Т.к. мы создаем REST API, то необходимо в качестве зависимости использовать spring-boot-starter-web, которая неявно определяет все остальные зависимости, такие как spring-core, spring-web, spring-webmvc, servlet api, и библиотеку jackson-databind, поэтому просто добавьте в pom.xml следующее:
Теперь следующие jar-библиотеки автоматически импортируются в ваш проект:
Следующий шаг — добавляем Spring Boot плагин:
Последний шаг — сделать так, чтобы Maven генерировал исполняемый jar-файл при сборке:
Ниже приведен полный файл pom.xml:
Как видите, используя одну зависимость, мы можем создать полностью функциональное web-приложение
4.3. Создание ресурсов REST
Теперь мы собираемся создать контроллер платежей вместе с POJO-классами для запросов и ответов
Напишем класс запроса платежа:
А также класс, обрабатывающий базовый ответ, возвращаемый нашим сервисом:
А теперь создадим контроллер:
4.4. Создание основного класса приложения
Этот последний шаг заключается в создании класса конфигурации и запуска приложения. Spring Boot поддерживает новую аннотацию @SpringBootApplication, которая эквивалентна использованию @Configuration, @EnableAutoConfiguration и @ComponentScan с их атрибутами по умолчанию
Таким образом, вам просто нужно создать класс, аннотированный с помощью @SpringBootApplication, а Spring Boot включит автоматическую настройку и отсканирует ваши ресурсы в текущем пакете:
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 и создали полностью рабочий пример с использованием встроенного сервера
В переводе обновили информацию:
UPDATE:
Как заметил Lure_of_Chaos, теперь уже все можно сделать автоматически через SPRING INITIALIZR. Причем не выходя из любимой JetBrains IntelliJ IDEA.
Источник
Взаимодействие RESTful-сервиса с Spring for Android
Этот урок освещает процесс создания приложения, которое использует Spring For Android RestTemplate для взаимодействия с MVC RESTful web-сервисом.
Что вы создадите
Вы создадите Android-клиент, который взаимодействует с Spring RESTful web-сервисом. В частности, клиент будет взаимодействовать с сервисом, созданным в уроке Создание RESTful Web-сервиса.
Android-клиент будет доступен через Android эмулятор и будет взаимодействовать с сервисом через запрос на:
Сервис будет отвечать JSON сообщением:
Android-клиент будет отображать ID и содержимое в форме.
Что вам потребуется
- Примерно 15 минут свободного времени
- Android Studio
- Интернет соединение
Создание Android-проекта
Создайте в Android Studio новый проект. Если хотите, можете использовать проект из каталога initial и перейти к шагу Создание класса представления. Когда вы закончите, то сможете сравнить ваш код с кодом из каталога complete и запустить клиент. Используйте «Rest» для приложения и имен модуля, а также измените имя пакета на «org.hello.rest». Укажите местоположение вашего проекта и оставьте остальные параметры как есть по умолчанию.
Следующий скрин отображает некоторые параметры для настройки иконок приложения. Оставьте как есть по умолчанию.
Следующий скрин отображает параметры для выбора типа используемого activity. Выберите «Blank Activity».
Последний скрин отображает некоторые каталоги для настроек activity, разметки и имени фрагмента. И снова оставьте как есть настройки по умолчанию и нажмите кнопку «Finish».
Когда вы создадите проект, вы увидите, что добавлены несколько файлов.
Для прохождения этого урока, вам предстоит отредактировать следующие файлы:
- Rest/src/main/AndroidManifest.xml
- Rest/src/main/res/values/strings.xml
- Rest/src/main/res/layout/fragment_main.xml
- Rest/src/main/res/menu/main.xml
- Rest/build.gradle
- Rest/src/main/java/org/hello/rest/MainActivity.java
Создание Android Manifest
После того, как вы создали проект, AndroidManifest.xml был также создан в базовом исполнении. Android Manifest содержит всю необходимую информацию для запуска Android-приложения и не может быть собрано без него. Манифест также содержит любые разрешения, которые приложение запрашивает у операционной системы Android. В нашем случае, приложению необходим доступ к интернет для создания HTTP запросов.
Добавьте INTERNET разрешение, чтобы приложение могло получить доступ к ресурсам через интернет.
Создание строковых ресурсов
Текстовые строки могут ссылаться на файловые ресурсы как из приложения, так и на другие источники. В этом уроке изпользуются четыре текстовых представления и пункт меню, где каждый из этих UI элементов нуждается в тектовом описании. Для начала, удалите строки hello_world и action_settings . Они не используются в этом учебном материале, поэтому могут быть удалены. Затем добавьте строки id_label , id_value , content_label , content_value и action_refresh для каждого UI виджета на будущее.
Создание разметки
Файл разметки является местом, где вы определяете визуальную структуру пользовательсткого интерфейса вашего приложения. Когда вы создали проект, Android Studio добавило фрагмент разметки. Как следует из названия, фрагмент разметки представляет собой часть общей разметки. В нашем случае, фрагмент разметки использован для отображения некоторого текста в главном activity. Удалите существующий «Hello world» TextView , который был добавлен автоматически изначально при создании проекта. Затем измените фрагмент разметки, включив в него четыре TextView виджета.
Разметка включает некоторую информацию о расположении и размере виджетов. Android Studio отображает визуальное представление разметки в окне предварительного просмотра:
Создание меню
Проект содержит меню для главного activity с существующим пунктом «Settings». Удалите этот пункт и добавьте пункт «Refresh». Обратите внимание, что для значения пункта меню также используется строковый ресурс.
Android Studio отображает визуальное представление разметки в окне предварительного просмотра:
Создание класса представления
По медели JSON данных, полученных из RESTful HTTP запроса, вам необходимо создать класс представления, который определяет поля. Перейдите в «org.hello.rest» пакет из панели Project. Выберите «New. » из меню «File».
Выберите «Java Class»
Добавьте переменные id и content , а также их методы получения(getters).
Добавление зависимостей
Чтобы использовать Spring for Android RestTemplate , вам необходимо добавить соответсвующие Maven зависимости в файл сборки Gradle. RestTemplate позволяет использовать Jackson, мощный JSON обработчик для Java.
Создание activity
Шаблон проектирования Model-View-Controller(MVC) широко используется в Android приложениях. Activity управляет представлением, которое является разметкой, уже созданной вами. Когда вы создали проект, MainActivity было создано с реализацией по умолчанию. Измените его, чтобы совершать RESTful HTTP запросы и обновлять представление. Каждое изменение пояснено ниже.
Для начала, добавьте частный класс HttpRequestTask . Этот класс наследуется от AsyncTask , который представляет собой механизм Android для выполнения потенциальных, долговременных действий вне главного UI потока. Это очень важно, т.к. иначе вы бы заблокировали UI, вынуждая пользователя поверить в то, что приложение не отвечает или завершилось с ошибкой.
Spring предоставляет шаблонный класс RestTemplate . Он позволяет взаимодействовать с большинством RESTful сервисами. В методе doInBackground класса HttpRequestTask , RestTemplate использован для создания HTTP запроса и разбора JSON ответа в Greeting объект. Когда doInBackground заканчивается, вызывается метод onPostExecute , в котором текстовые значения виджетов greetingIdText и greetingContentText обновляются результатом HTTP запроса.
Далее, добавьте метод onStart с вызовом метода execute класса HttpRequestTask . Метод onStart является частью жизненного цикла Activity и вызывается при запуске activity. В результате, HTTP запрос выполнится, когда приложение загружается.
Напоследок, обновите метод onOptionsItemSelected , чтобы также выполнять HTTP запрос, когда пункт меню «Refresh» выбран. Это позволяет вам совершать дополнительные HTTP запросы без необходимости закрывать и перезапускать приложение.
Запуск клиента
Теперь вы можете запустить приложение из Android Studio. Для этого нажмите кнопку проигрывателя(зеленый треугольник) на панели инструментов Android Studio. Перед вами откроется диалоговое окно с выбором устройства, на котором будет запущено приложение. У вас должно быть Android-устройство, либо эмулятор, настроенный для запуска приложения. Если у вас нет настроенного Android Virtual Device (AVD), то вы можете выбрать кружочек для создания нового.
После выбора устройства, Android Studio соберет и развернет приложение:
ID значение будет увеличиваться каждый раз при нажатии кнопки обновления в меню.
Поздравляем! Вы только что разработали простой REST-клиент, используя Spring for Android.
Источник