Этот урок показывает пример того, как 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) версию этого плагина.
build.gradle
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) {
gradleVersion = '1.11'
}
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 приложения.
src/main/java/hello/HelloController.java
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
класс с компонентами:
src/main/java/hello/Application.java
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, то добавьте это в список зависимостей:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Затем перезапустите приложение:
./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/{name:.*}],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/{name:.*}],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...
Они включают:
ошибки,
окружение,
состояние,
бины,
информацию,
метрики,
следы,
configprops и
дамп.
Также есть /shutdown
, но она видна по умолчанию только через JMX. Для
включения её к общедоступным,
добавьте endpoints.shutdown.enabled=true
в ваш application.properties
файл.
это легко проверить по состоянию приложения:
$ curl localhost:8080/health ok
Вы можете попытаться вызвать завершение работы через curl:
$ curl -X POST localhost:8080/shutdown {"timestamp":1401820343710,"error":"Method Not Allowed","status":405,"message":"Request method 'POST' not supported"}
Т.к. мы не включили его, запрос блокирован, потому что его не существует.
Более подробную информацию о каждом из этих 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 Boot’s CLI
.
Запустите его:
$ spring run app.groovy
Предполагается, что вы завершите предыдущее приложение во избежание конфликта портов.
Давайте проверим, что получилось:
$ curl localhost:8080 Hello World!
Spring Boot динамически добавляет аннотации к вашему коду и использует
Groovy Grape для
подтягивания необходимых для запуска приложения библиотек. Смотрите
документацию,
если хотите копнуть шлубже.
Итог
Поздравляем! Вы только что создали простое web приложени с использованием Spring Boot и изучили
как нарастить ваш темп разработки. вы также настроили некоторые удобные сервисы. Это только малая
часть того, что может делать Spring Boot.
С оригинальным текстом урока вы можете ознакомиться на
spring.io.
comments powered by
Время на прочтение
8 мин
Количество просмотров 352K
Из-за громоздкой конфигурации зависимостей настройка 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 приложений требуется следующее:
- Java 8+
- Apache Maven 3.x
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 следующим образом:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
Т.к. мы создаем REST API, то необходимо в качестве зависимости использовать spring-boot-starter-web, которая неявно определяет все остальные зависимости, такие как spring-core, spring-web, spring-webmvc, servlet api, и библиотеку jackson-databind, поэтому просто добавьте в pom.xml следующее:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Теперь следующие jar-библиотеки автоматически импортируются в ваш проект:
Следующий шаг — добавляем Spring Boot плагин:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Последний шаг — сделать так, чтобы Maven генерировал исполняемый jar-файл при сборке:
<packaging>jar</packaging>
Ниже приведен полный файл pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>springboot.topjava.ru</groupId>
<artifactId>SpringBootRestService</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Как видите, используя одну зависимость, мы можем создать полностью функциональное 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 и создали полностью рабочий пример с использованием встроенного сервера
Источник:
https://dzone.com/articles/introducing-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.
#статьи
-
0
Разбираемся в его отличиях от фреймворка Spring и пишем простой код.
Иллюстрация: Wikimedia Commons / Spring / Colowgee для Skillbox Media
Изучает Python, его библиотеки и занимается анализом данных. Любит путешествовать в горах.
В мире Java-разработки Spring, пожалуй, — самый популярный фреймворк для создания корпоративных приложений. Но если открыть документацию, литературу или курсы по нему, то мы почти сразу столкнёмся со Spring Boot.
Давайте разберёмся, почему они всегда идут рука об руку, в чём их различия и чем так хорош Spring Boot. А напоследок напишем простой проект.
Содержание
- Что такое Spring Boot и чем он отличается от Spring
- Быстрый старт
- Преимущества Spring Boot в работе
- Запускаем Spring Boot
- Создаём первое веб-приложение
- Что дальше?
Итак, Spring — это фреймворк для Java, на котором пишут веб-приложения и микросервисы. А Spring Boot — это расширение, которое упрощает и ускоряет работу со Spring. Оно представляет собой набор утилит, автоматизирующих настройки фреймворка.
Spring Boot разработан для ускорения создания веб-приложений. Он отличается от своего «родителя» тем, что не требует сложной настройки и имеет ряд встроенных инструментов, упрощающих написание кода.
В отличие от базового фреймворка, он умеет:
- упаковывать зависимости в стандартные starter-пакеты;
- автоматически конфигурировать приложения с помощью jar-зависимостей;
- использовать JavaConfig, что позволяет отказаться от использования XML;
- не зависеть от множественного импорта Maven и конфликтов версий, связанных с этим;
- обеспечивать мощную пакетную обработку и управлять конечными точками RES;
- упрощать интеграцию с другими Java-фреймворками, такими как JPA / Hibernate ORM, Struts и так далее;
- локально запускать встроенные HTTP-серверы, такие как Tomcat и Jetty, упрощая разработку и тестирование веб-приложений.
Всё это и привело к широкому распространению Spring Boot, сделав его основным инструментом для разработки веб-приложений при работе с фреймворком Spring.
Знакомство с библиотекой можно начать с официальной документации. В ней собраны краткие описания основных аннотаций, классов и методов, а также разобраны практические примеры их использования. После этого лучше перейти на «продвинутую» документацию с разбором методов работы с JSON, логированием, тестированием и другими деталями.
Для отработки знаний на практике у Spring Boot есть большой гайд с разработкой отдельных приложений и их частей. И конечно, не стоит забывать официальную документацию самого фреймворка Spring. В ней подробно разобрана работа не только с Boot, но и с другими модулями.
Spring Boot «из коробки» имеет несколько инструментов, ускоряющих работу программиста.
Одна из особенностей Spring Boot — Spring Boot Starters. Это предварительно настроенные зависимости, облегчающие работу с проектом. В зависимости от задач к приложению можно подключить один или несколько starter-пакетов.
Например, в Spring Boot Starter Web есть инструменты для разработки веб-приложений (Tomcat, Jackson) и для обработки JSON. А Spring Boot Starter Test содержит классы и зависимости для тестирования, такие как Mockito и Spring Boot Test.
Подробное описание Spring Boot Starters с примерами работы можно найти в документации.
Разработчик, пишущий код на Spring Boot, может запускать встроенные веб-серверы: Tomcat, Jetty и Undertow, не тратя время на настройку сторонних серверов. Если же ему по какой-то причине необходимо использовать свой сервер, то для этого достаточно исключить зависимости по умолчанию и выбрать подходящий starter-пакет.
Как и родительский фреймворк, Spring Boot позволяет работать со встроенными модулями, которые легко интегрируются в приложения, добавляя функциональность и ускоряя разработку. Например:
- Spring Data — позволяет работать с различными базами данных;
- Spring Boot Actuator — функция для мониторинга и управления созданным приложением.
Все встроенные функции подробно описаны в документации и указаны в левом столбце меню.
Для того чтобы приступить к работе со Spring Boot, нам необходимо создать новый проект и подготовить IDE к работе.
Самый простой способ подготовить фреймворк для работы — воспользоваться сайтом start.spring.io. Это конструктор, который позволяет легко задать конфигурацию проекта на Spring Boot.
Откроем сайт:
В левой части экрана указаны различные варианты настройки, включая параметры проекта. Так как мы тестируем возможность запуска Spring Boot, то можем ничего не менять. Обратите внимание, что сайт автоматически предлагает использовать наиболее актуальную версию Spring Boot. На 5 июля это 3.1.1.
В правой части указаны зависимости, которые мы можем использовать в своём проекте. Для работы с веб-приложением требуется нажать на кнопку ADD DEPENDENCIES и добавить пункт Spring Web:
Теперь на экране будет видна добавленная зависимость:
Нажимаем кнопку Generate и скачиваем архив — это шаблон нашего проекта. Он скоро пригодится.
Пока разархивируем его и зайдём в директорию. В ней содержится нескольких файлов:
- файл mnvw, который позволяет запустить проект Maven без его установки;
- файл pom.xml, содержащий описания всех зависимостей приложения;
- каталог java — основной каталог пакетов и классов;
- каталог resources, хранящий ресурсы: шаблоны, файлы настроек, локализации и так далее;
- application.properties — файл с настройками проекта, размещённый в подпапках шаблона.
Вся последующая работа будет проходить именно в этой директории.
Для работы со Spring Boot подойдёт любой из популярных редакторов кода, например IntelliJ IDEA или Visual Studio Code.
Мы будем использовать Visual Studio Code. Запустите редактор и создайте новый проект. После этого перейдите в раздел Extensions и в поиске найдите Spring Boot Extension Pack:
Установите его. Теперь в VSC можно будет работать со Spring Boot и создавать веб-приложения.
Теперь в скачанном архиве в директории src/main/java/com/example/demo откройте файл DemoApplication.java:
В этом файле будем писать весь код. По умолчанию он используется в качестве стартовой страницы при запуске сервиса. В нём можем писать код на Java, вставлять элементы из HTML и CSS для оформления страницы.
Мы подготовили наш редактор кода к работе со Spring Boot и создали шаблон проекта. Теперь приступим к созданию веб-приложения.
Начнём с классического приложения приветствия. Напишем код, который будет создавать веб-страницу с надписью «Привет, читатели Skillbox Media». Для этого заменим код в VSC на новый:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @GetMapping("/hello") public String hello(@RequestParam(value = "name", defaultValue = "читатель Skillbox Media") String name) { return String.format("Hello, %s!", name); } }
В начале кода мы импортируем несколько классов и аннотаций, облегчающих работу:
- org.springframework.boot.SpringApplication — класс, который часто используется для загрузки и запуска приложений Spring;
- org.springframework.boot.autoconfigure.SpringBootApplication — обозначает класс конфигурации, который объявляет один или несколько методов @Bean, а также запускает автоконфигурацию и сканирование компонентов в коде;
- org.springframework.web.bind.annotation.GetMapping — аннотация для отображения результатов HTTP-запрос методом GET на определённые методы, функция которых — обрабатывать события;
- org.springframework.web.bind.annotation.RequestParam — аннотация, указывающая, что параметр метода должен быть связан с параметром веб-запроса;
- org.springframework.web.bind.annotation.RestController — удобная аннотация, которая сама аннотирована @Controller и @ResponseBody.
Аннотация @RestController сообщает Spring, что этот код описывает конечную точку, которая должна быть доступна через веб-интерфейс. Аннотация @GetMapping («/hello») указывает Spring, что надо использовать указанный ниже метод hello() для ответа на запросы, отправленные на адрес http://localhost:8080/hello.
@RequestParam указывает Spring, что в запросе должно быть значение name, а если его там нет, то нужно использовать по умолчанию строку читатель Skillbox Media.
Метод hello(), который мы добавили, принимает параметр name с типом String, а затем объединяет этот параметр со словом Hello в коде. Это означает, что если вы зададите в запросе имя Иван, то ответом будет Hello, Иван. Имя можно прописать вручную в параметре defaultValue.
Для запуска кода нажмём кнопку Run в нашей IDE. В Visual Studio Code это кнопка Run and Debug:
В терминале IDE появится информация о запуске Spring Boot:
Если код написан неправильно, то вместо этого окна вы увидите информацию об ошибках. Но у нас всё хорошо. Не завершая работу кода в IDE, откроем браузер и перейдём по адресу http://localhost:8080/hello.
На экране наша надпись:
Усложним задачу — попробуем вывести имя читателя вместо обезличенного обращения. Для этого откроем страницу с именем, переданным в качестве параметра name:
http://localhost:8080/hello?name=Anton
Результат:
Всё получилось. Мы видим не общее обращение к читателям, а имя человека.
Как зарабатывать больше с помощью нейросетей?
Бесплатный вебинар: 15 экспертов, 7 топ-нейросетей. Научитесь использовать ИИ в своей работе и увеличьте доход.
Узнать больше
Вступление
Spring Boot — это популярный фреймворк для создания веб-приложений с использованием Java. Это часть фреймворка Spring, которая представляет собой набор инструментов и библиотек для создания приложений корпоративного уровня. Spring Boot упрощает создание автономных приложений производственного уровня, которые можно легко развернуть и запустить с минимальной конфигурацией.
Как разработчик с 3-летним опытом работы с Spring Boot, я могу с уверенностью сказать, что это один из самых мощных и универсальных фреймворков для создания веб-приложений с использованием языка программирования Java.
Во время моей стажировки у меня была возможность поработать со встроенными функциями Spring Boot, такими как Spring Security и Spring Data. Эти функции упростили реализацию безопасности и управления данными в приложении.
Как Spring Boot облегчает жизнь разработчикам?
По моему опыту, одним из самых больших преимуществ Spring Boot является его способность автоматически настраивать ваше приложение на основе зависимостей, которые вы добавили в свой проект. Эта функция экономит много времени и усилий разработчикам, так как устраняет необходимость в ручной настройке. В результате разработчики могут сосредоточиться на написании кода и реализации функций, а не тратить часы на настройку приложения.
Ещё одним преимуществом Spring Boot является его поддержка широкого спектра технологий веб-приложений. В своих проектах я использовал Spring Boot с Spring MVC, Spring WebFlux и Thymeleaf. Я также работал с различными технологиями доступа к данным, такими как JPA, JDBC, ArangoDB и MongoDB. Такая гибкость позволяет разработчикам выбирать технологию, которая наилучшим образом соответствует их потребностям, и устраняет проблемы совместимости.
Большое и активное сообщество разработчиков Spring Boot также является значительным преимуществом. Во время своих проектов я часто консультировался с учебными пособиями, документацией и примерами кода из сообщества. И всякий раз, когда я сталкивался с какими-либо проблемами, я всегда мог найти решение, выполнив поиск в Интернете или обратившись за помощью на форумах, посвященных Spring Boot.
Как создать проект на Spring Boot?
Существует несколько способов создания проекта на Spring Boot, но наиболее распространённым методом является использование веб-сайта Spring Initializer (https://start.spring.io /) или инструмент Spring CLI (интерфейс командной строки).
Способ 1: Использование веб-сайта Spring Initializer:
- Перейдите на веб-сайт Spring Initializer (https://start.spring.io /).
- Выберите параметры, которые для своего проекта, такие как тип проекта, язык и версия Spring Boot.
- Выберите зависимости, которые вы хотите включить в свой проект.
- Нажмите на кнопку Generate, чтобы загрузить ZIP-файл, содержащий файлы проекта.
- Извлеките содержимое ZIP-файла в каталог на вашем компьютере.
- Импортируйте проект в предпочитаемую вами IDE (интегрированную среду разработки) и приступайте к разработке своего приложения.
Способ 2: Использование Spring CLI:
- Установите инструмент Spring CLI на свой компьютер. Это можно сделать, следуя инструкциям на веб-сайте Spring (https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started-installing-the-cli).
- Откройте командную строку или окно терминала.
- Запустите команду spring init —dependencies=web myproject, чтобы создать новый проект Spring Boot с веб-зависимостью.
- Приведённая выше команда создаст новый каталог под названием “myproject” с файлами проекта.
- Перейдите в новый каталог, выполнив команду cd myproject
- Запустите команду ./mvnw spring-boot:run, чтобы запустить приложение.
Оба метода создадут базовый проект на Spring Boot, который вы можете использовать в качестве отправной точки для своего приложения. Как только проект будет создан, вы сможете приступить к разработке своего приложения, добавляя новые контроллеры, службы и представления по мере необходимости.
Простой проект на Spring Boot
Ниже приведён пример приложения Spring Boot, которое демонстрирует, как создать простую конечную точку “Hello, World!” с использованием Spring MVC.
- 1. Создайте новый проект Spring Boot с помощью веб-сайта Spring Initializer или инструмента Spring CLI.
- 2. Добавьте следующую зависимость к вашему проекту pom.xml файл (если вы используете Maven) или файл build.gradle (если вы используете Gradle):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 3. Создайте новый пакет с именем “com.example.app” и внутри этого пакета создайте новый класс с именем “HelloController”. Добавьте следующий код:
package com.example.app;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping(«/hello»)
public String sayHello() {
return «Hello, World!»;
}
}
- 4. Создайте новый класс под названием “Application” и добавьте следующий код:
package com.example.app;
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. Запустите приложение, запустив класс Application как Java-приложение.
- 6. Откройте свой браузер и перейдите к “http://localhost:8080/hello». Вы должны увидеть сообщение “Hello, World!”, отображаемое в браузере.
Это очень простой пример того, как создать обычную конечную точку с помощью Spring Boot. Вы можете добавить больше функциональности и сложности в приложение по мере необходимости.
Создание конечной точки RESTful API
Создание конечной точки RESTful API с помощью Spring Boot — относительно простой процесс. Первый шаг — создать новый класс контроллера и снабдить его аннотацией @RestController. Эта аннотация сообщает Spring Boot, что класс следует рассматривать как контроллер и что он должен обрабатывать входящие HTTP-запросы.
Далее вам нужно будет создать новый метод в классе контроллера и снабдить его аннотацией @RequestMapping. Эта аннотация сопоставляет метод с определённым URI, а также может указывать HTTP-метод, который должен обрабатывать этот метод. Например, вы можете использовать аннотацию @GetMapping для сопоставления метода с определённым URI и обработки только запросов GET.
Вот пример простой конечной точки RESTful API, которая сопоставляется с URI “/hello” и возвращает сообщение “Hello, World!” при обращении к конечной точке:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping(«/hello»)
public String sayHello() {
return «Hello, World!»;
}
}
В этом примере аннотация @RestController говорит Spring Boot обрабатывать класс как контроллер, а аннотация @GetMapping(«/hello») сопоставляет метод sayHello() с URI «/hello» и обрабатывает только запросы GET. Метод возвращает строку «Hello, World!» при обращении к конечной точке.
Вы также можете передать параметры конечной точке, используя аннотацию @PathVariable, например:
@GetMapping(«/hello/{name}»)
public String sayHello(@PathVariable String name) {
return «Hello, » + name + «!»;
}
В этом примере конечная точка /hello/{name} принимает параметр name в пути и возвращает «Hello, [имя]».
Вы также можете использовать аннотацию @RequestParam для передачи параметров запроса в конечную точку, например:
@GetMapping(«/hello»)
public String sayHello(@RequestParam(value = «name», defaultValue = «World») String name) {
return «Hello, » + name + «!»;
}
В этом примере конечная точка /hello принимает параметр name в запросе и возвращает «Hello, [имя]».
Это всего лишь базовый пример того, как создать конечную точку RESTful API с помощью Spring Boot. Вы можете добавить больше функциональности и сложности в приложение по мере необходимости.
Использование встроенных функций Spring Boot
Spring Boot предоставляет множество встроенных функций, которые могут быть легко интегрированы в ваше приложение для добавления функциональности и упрощения разработки. Вот некоторые из наиболее часто используемых встроенных функций:
- 1. Spring Security: Spring Boot предоставляет встроенную поддержку для добавления аутентификации и авторизации в ваше приложение. Это можно сделать, добавив зависимость spring-boot-starter-security в свой проект и настроив параметры безопасности в application.properties или application.yml файлах.
- 2. Spring Data: Spring Boot предоставляет встроенную поддержку для работы с базами данных и другими источниками данных. Это можно сделать, добавив зависимость spring-boot-starter-data-jpa или spring-boot-starter-data-mongodb к вашему проекту и настроив источник данных в application.properties или application.yml файлах.
- 3. Spring WebFlux: Spring Boot предоставляет встроенную поддержку для создания реактивных веб-приложений. Это можно сделать, добавив зависимость spring-boot-starter-webflux к вашему проекту и используя модель реактивного программирования, предоставляемую Spring WebFlux.
- 4. Spring Actuator: Spring Boot обеспечивает встроенную поддержку для мониторинга и управления вашим приложением. Это можно сделать, добавив зависимость spring-boot-starter-actuator к вашему проекту и настроив параметры привода в application.properties или application.yml файлах.
Вот пример того, как использовать Spring Security в приложении Spring Boot:
- 1. Spring Security: Spring Boot предоставляет встроенную поддержку для добавления аутентификации и авторизации в ваше приложение. Это можно сделать, добавив зависимость spring-boot-starter-security в свой проект и настроив параметры безопасности в application.properties или application.yml файлах.
- 2. Spring Data: Spring Boot предоставляет встроенную поддержку для работы с базами данных и другими источниками данных. Это можно сделать, добавив зависимость spring-boot-starter-data-jpa или spring-boot-starter-data-mongodb к вашему проекту и настроив источник данных в application.properties или application.yml файлах.
- 3. Spring WebFlux: Spring Boot предоставляет встроенную поддержку для создания реактивных веб-приложений. Это можно сделать, добавив зависимость spring-boot-starter-webflux к вашему проекту и используя модель реактивного программирования, предоставляемую Spring WebFlux.
- 4. Spring Actuator: Spring Boot обеспечивает встроенную поддержку для мониторинга и управления вашим приложением. Это можно сделать, добавив зависимость spring-boot-starter-actuator к вашему проекту и настроив параметры привода в application.properties или application.yml файлах.
Вот пример того, как использовать Spring Security в приложении Spring Boot:
- 1. добавьте зависимость spring-boot-starter-security в свой проект.
- 2. Создайте новый класс с именем “SecurityConfig” и добавьте следующий код:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser(«user»).password(«password»).roles(«USER»);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers(«/hello»).permitAll()
.anyRequest().authenticated()
.and()
.formLogin();
}
}
В этом примере класс SecurityConfig используется для настройки параметров безопасности для приложения. Метод configure() используется для настройки диспетчера аутентификации, а также для настройки параметров безопасности HTTP.
Строка antMatchers(«/hello»).PermitAll() позволяет получать доступ ко всем запросам к конечной точке «/hello» без аутентификации, в то время как anyRequest().authenticated() требует аутентификации для всех остальных запросов. А метод formLogin() обеспечивает аутентификацию приложения на основе форм.
Аналогичным образом, вы можете использовать Spring Data и Spring Web Flux, добавив соответствующие зависимости и настроив параметры в application.properties или application.yml файлах. А для Spring Actuator добавьте зависимость spring-boot-starter-actuator и настройте параметры привода в application.properties или application.yml файлах.
Подключение вашего приложения на Spring Boot к базе данных
Spring Boot предоставляет встроенную поддержку для подключения к различным базам данных, включая реляционные базы данных (такие как MySQL, PostgreSQL и Oracle) и базы данных NoSQL (такие как MongoDB и Cassandra).
Одним из наиболее распространённых способов подключения к базе данных в Spring Boot является использование модуля Spring Data JPA (Java Persistence API). Этот модуль обеспечивает последовательный и простой способ взаимодействия с базами данных с использованием стандарта JPA.
Чтобы использовать Spring Data JPA в вашем приложении, вам нужно будет добавить зависимость spring-boot-starter-data-jpa к вашему проекту и настроить источник данных в application.properties или application.yml файлах.
Вот пример того, как настроить подключение к базе данных MySQL в Spring Boot:
- 1. Добавьте зависимости spring-boot-starter-data-jpa и mysql-connector-java в свой проект.
- 2. В application.properties или application.yml файлах, настройте источник данных, добавив следующие свойства:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
Развёртывание приложения на Spring Boot
Развёртывание приложения на Spring Boot может быть выполнено различными способами, в зависимости от ваших конкретных требований и среды, в которой вы это осуществляете. Некоторые из наиболее распространенных способов развёртывания приложения на Spring Boot включают:
- Запуск приложения как отдельного файла jar или war: Это самый простой способ развёртывания приложения Spring Boot. Это может быть сделано с помощью плагинов Spring Boot Maven или Gradle для упаковки приложения в виде отдельного файла jar или war. Как только приложение упаковано, его можно запустить с помощью команды java -jar.
- Развёртывание на веб-сервере: приложения Spring Boot также могут быть развёрнуты на веб-сервере, таком как Apache Tomcat или Jetty. Это можно сделать, упаковав приложение в виде файла war и развернув его на веб-сервере.
- Развёртывание у облачного провайдера: приложения Spring Boot можно легко развернуть у облачных провайдеров, таких как AWS, Azure и Google Cloud. Это можно сделать с помощью специфичных для облака инструментов и служб, таких как Elastic Beanstalk, App Engine и Cloud Foundry.
- Использование платформы контейнеризации: Приложения Spring Boot могут быть развернуты с использованием платформ контейнеризации, таких как Docker, Kubernetes и OpenShift. Это можно сделать, создав Docker-образ приложения и развернув его на платформе контейнеризации.
- Развёртывание на сервере приложений: Приложения Spring Boot могут быть развёрнуты на сервере приложений, таком как WildFly, JBoss EAP и WebLogic. Это можно сделать, упаковав приложение в виде файла war и развернув его на сервере приложений.
Важно отметить, что процесс развёртывания может варьироваться в зависимости от конкретной среды и требований вашего приложения. Рекомендуется протестировать приложение в разных средах, прежде чем развёртывать его в производственной среде.
Лучшие практики и устранение неполадок
При работе с Spring Boot существует несколько рекомендаций и методов устранения неполадок, которые могут помочь вам создавать более совершенные приложения и быстрее устранять проблемы.
- Поддерживайте версию Spring Boot в актуальном состоянии: Spring Boot постоянно развивается, и регулярно выпускаются новые версии. Обновление версии Spring Boot вашего приложения может помочь обеспечить вам доступ к новейшим функциям и исправлениям ошибок.
- Используйте встроенное логирование Spring Boot: Spring Boot предоставляет встроенную поддержку логирования. Рекомендуется использовать эту функцию, а не стороннюю библиотеку. Это обеспечит лучшую интеграцию с экосистемой Spring Boot и упростит устранение неполадок.
- Используйте Spring Boot Actuator: Spring Boot Actuator предоставляет множество конечных точек, которые можно использовать для мониторинга вашего приложения и управления им. Это может помочь вам быстро выявлять и устранять проблемы.
- Поддерживайте актуальность зависимостей вашего приложения: Регулярное обновление зависимостей вашего приложения может помочь обеспечить вам доступ к новейшим функциям и исправлениям ошибок.
- Используйте Profiler: Spring Boot предоставляет встроенную поддержку профилирования вашего приложения, которая может помочь вам выявить узкие места в производительности и утечки памяти.
- Используйте поддержку тестирования Spring Boot: Spring Boot предоставляет встроенную поддержку тестирования, которая может помочь вам быстро и легко писать и запускать тесты для вашего приложения.
- Помните о конфигурации: Spring Boot позволяет вам настраивать ваше приложение с помощью различных методов, таких как properties файл, yml файл и аннотации. Помните о конфигурации, которую вы используете, и убедитесь, что она корректна.
- Ознакомьтесь с документацией: Spring Boot располагает обширной документацией, которая может помочь вам понять, как использовать фреймворк и решать распространённые проблемы.
Для устранения неполадок Spring Boot также предоставляет множество вариантов отладки, которые могут помочь вам быстро выявлять и устранять проблемы. Например, вы можете использовать привод Spring Boot для просмотра метрик приложения или включить отладку, добавив флаг — debug при запуске приложения. Кроме того, вы можете использовать Spring Boot DevTools для быстрого внесения изменений в ваше приложение и просмотра результатов в режиме реального времени.
Другим полезным инструментом для устранения неполадок является Spring Boot CLI, который позволяет быстро запускать и тестировать приложения Spring Boot из командной строки. Это может быть полезно для быстрого выявления и решения проблем без необходимости настройки полной среды разработки.
Заключение
В статье обсуждался процесс создания конечной точки RESTful API, использование встроенных функций Spring Boot, подключение к базе данных, развёртывание приложения Spring Boot, а также рекомендации и методы устранения неполадок.
Spring Boot предоставляет встроенную поддержку для подключения к базам данных, повышения безопасности приложения, работы с модулем Spring WebFlux и мониторинга приложения с помощью Spring Actuator. Кроме того, он может быть легко развёрнут в различных средах, включая автономные веб-серверы, облачных провайдеров, платформы контейнеризации и серверы приложений. Следуя рекомендациям, таким как обновление версии Spring Boot, использование встроенного ведения журнала Spring Boot и использование привода Spring Boot, разработчики могут создавать более совершенные приложения и быстрее устранять проблемы.
В заключение, Spring Boot — это мощная и гибкая платформа для создания веб-приложений с использованием фреймворка Spring. Она упрощает процесс разработки, предоставляя множество встроенных функций и инструментов, которые могут быть легко интегрированы в ваше приложение.
Ссылка была взята с этого источника:
Вступление
Spring Boot – это популярный фреймворк для создания веб-приложений с использованием Java. Spring, представляет набор инструментов и библиотек для создания приложений корпоративного уровня. Spring Boot упрощает создание автономных приложений производственного уровня, которые можно легко развернуть и запустить с минимальной конфигурацией.
Как разработчик с 3-летним опытом работы с Spring Boot, я могу с уверенностью сказать, что это один из самых мощных и универсальных фреймворков для создания веб-приложений с использованием языка программирования Java.
Во время моей стажировки у меня была возможность поработать со встроенными функциями Spring Boot, такими как Spring Security и Spring Data. Эти функции упростили реализацию безопасности и управления данными в приложении.
@javatg – Java разработка
По моему опыту, одним из самых больших преимуществ Spring Boot является его способность автоматически настраивать ваше приложение на основе зависимостей, которые вы добавили в свой проект. Эта функция экономит много времени и усилий разработчикам, так как устраняет необходимость в ручной настройке. В результате разработчики могут сосредоточиться на написании кода и реализации функций, а не тратить часы на настройку приложения.
Ещё одним преимуществом Spring Boot является его поддержка широкого спектра технологий веб-приложений. В своих проектах я использовал Spring Boot с Spring MVC, Spring WebFlux и Thymeleaf. Я также работал с различными технологиями доступа к данным, такими как JPA, JDBC, ArangoDB и MongoDB. Такая гибкость позволяет разработчикам выбирать технологию, которая наилучшим образом соответствует их потребностям, и устраняет проблемы совместимости.
Большое и активное сообщество разработчиков Spring Boot также является значительным преимуществом. Во время своих проектов я часто консультировался с учебными пособиями, документацией и примерами кода из сообщества. И всякий раз, когда я сталкивался с какими-либо проблемами, я всегда мог найти решение, выполнив поиск в Интернете или обратившись за помощью на форумах, посвященных Spring Boot.
Как создать проект на Spring Boot?
Существует несколько способов создания проекта на Spring Boot, но наиболее распространённым методом является использование веб-сайта Spring Initializer (https://start.spring.io /) или инструмент Spring CLI (интерфейс командной строки).
Способ 1: Использование веб-сайта Spring Initializer:
- Перейдите на веб-сайт Spring Initializer (https://start.spring.io /).
- Выберите параметры, которые для своего проекта, такие как тип проекта, язык и версия Spring Boot.
- Выберите зависимости, которые вы хотите включить в свой проект.
- Нажмите на кнопку Generate, чтобы загрузить ZIP-файл, содержащий файлы проекта.
- Извлеките содержимое ZIP-файла в каталог на вашем компьютере.
- Импортируйте проект в предпочитаемую вами IDE (интегрированную среду разработки) и приступайте к разработке своего приложения.
Способ 2: Использование Spring CLI:
- Установите инструмент Spring CLI на свой компьютер. Это можно сделать, следуя инструкциям на веб-сайте Spring (https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#getting-started-installing-the-cli).
- Откройте командную строку или окно терминала.
- Запустите команду spring
init --dependencies=web myproject
, чтобы создать новый проект Spring Boot с веб-зависимостью. - Приведённая выше команда создаст новый каталог под названием “myproject” с файлами проекта.
- Перейдите в новый каталог, выполнив команду
cd myproject
- Запустите команду
./mvnw spring-boot:run
, чтобы запустить приложение.
Оба метода создадут базовый проект на Spring Boot, который вы можете использовать в качестве отправной точки для своего приложения. Как только проект будет создан, вы сможете приступить к разработке своего приложения, добавляя новые контроллеры, службы и представления по мере необходимости.
Простой проект на Spring Boot
Ниже приведён пример приложения Spring Boot, которое демонстрирует, как создать простую конечную точку “Hello, World!” с использованием Spring MVC.
- 1. Создайте новый проект Spring Boot с помощью веб-сайта Spring Initializer или инструмента Spring CLI.
- 2. Добавьте следующую зависимость к вашему проекту pom.xml файл (если вы используете Maven) или файл build.gradle (если вы используете Gradle):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 3. Создайте новый пакет с именем “com.example.app” и внутри этого пакета создайте новый класс с именем “HelloController”. Добавьте следующий код:
package com.example.app;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
- 4. Создайте новый класс под названием “Application” и добавьте следующий код:
package com.example.app;
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. Запустите приложение, запустив класс Application как Java-приложение.
- 6. Откройте свой браузер и перейдите к “http://localhost:8080/hello“. Вы должны увидеть сообщение “Hello, World!”, отображаемое в браузере.
Это очень простой пример того, как создать обычную конечную точку с помощью Spring Boot. Вы можете добавить больше функциональности и сложности в приложение по мере необходимости.
Создание конечной точки RESTful API
Создание конечной точки RESTful API с помощью Spring Boot – относительно простой процесс. Первый шаг – создать новый класс контроллера и снабдить его аннотацией @RestController
. Эта аннотация сообщает Spring Boot, что класс следует рассматривать как контроллер и что он должен обрабатывать входящие HTTP-запросы.
Далее вам нужно будет создать новый метод в классе контроллера и снабдить его аннотацией @RequestMapping
. Эта аннотация сопоставляет метод с определённым URI, а также может указывать HTTP-метод, который должен обрабатывать этот метод. Например, вы можете использовать аннотацию @GetMapping
для сопоставления метода с определённым URI и обработки только запросов GET.
Вот пример простой конечной точки RESTful API, которая сопоставляется с URI “/hello” и возвращает сообщение “Hello, World!” при обращении к конечной точке:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!";
}
}
В этом примере аннотация @RestController
говорит Spring Boot обрабатывать класс как контроллер, а аннотация @GetMapping("/hello")
сопоставляет метод sayHello()
с URI “/hello” и обрабатывает только запросы GET. Метод возвращает строку “Hello, World!” при обращении к конечной точке.
Вы также можете передать параметры конечной точке, используя аннотацию @PathVariable
, например:
@GetMapping("/hello/{name}")
public String sayHello(@PathVariable String name) {
return "Hello, " + name + "!";
}
В этом примере конечная точка /hello/{name}
принимает параметр name в пути и возвращает “Hello, [имя]”.
Вы также можете использовать аннотацию @RequestParam
для передачи параметров запроса в конечную точку, например:
@GetMapping("/hello")
public String sayHello(@RequestParam(value = "name", defaultValue = "World") String name) {
return "Hello, " + name + "!";
}
В этом примере конечная точка /hello
принимает параметр name
в запросе и возвращает “Hello, [имя]”.
Это всего лишь базовый пример того, как создать конечную точку RESTful API с помощью Spring Boot. Вы можете добавить больше функциональности и сложности в приложение по мере необходимости.
Использование встроенных функций Spring Boot
Spring Boot предоставляет множество встроенных функций, которые могут быть легко интегрированы в ваше приложение для добавления функциональности и упрощения разработки. Вот некоторые из наиболее часто используемых встроенных функций:
- 1. Spring Security: Spring Boot предоставляет встроенную поддержку для добавления аутентификации и авторизации в ваше приложение. Это можно сделать, добавив зависимость spring-boot-starter-security в свой проект и настроив параметры безопасности в application.properties или application.yml файлах.
- 2. Spring Data: Spring Boot предоставляет встроенную поддержку для работы с базами данных и другими источниками данных. Это можно сделать, добавив зависимость spring-boot-starter-data-jpa или spring-boot-starter-data-mongodb к вашему проекту и настроив источник данных в application.properties или application.yml файлах.
- 3. Spring WebFlux: Spring Boot предоставляет встроенную поддержку для создания реактивных веб-приложений. Это можно сделать, добавив зависимость spring-boot-starter-webflux к вашему проекту и используя модель реактивного программирования, предоставляемую Spring WebFlux.
- 4. Spring Actuator: Spring Boot обеспечивает встроенную поддержку для мониторинга и управления вашим приложением. Это можно сделать, добавив зависимость spring-boot-starter-actuator к вашему проекту и настроив параметры привода в application.properties или application.yml файлах.
Вот пример того, как использовать Spring Security в приложении Spring Boot:
- 1. добавьте зависимость spring-boot-starter-security в свой проект.
- 2. Создайте новый класс с именем “SecurityConfig” и добавьте следующий код:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/hello").permitAll()
.anyRequest().authenticated()
.and()
.formLogin();
}
}
В этом примере класс SecurityConfig
используется для настройки параметров безопасности для приложения. Метод configure()
используется для настройки диспетчера аутентификации, а также для настройки параметров безопасности HTTP.
Строка antMatchers("/hello").PermitAll()
позволяет получать доступ ко всем запросам к конечной точке “/hello” без аутентификации, в то время как anyRequest().authenticated()
требует аутентификации для всех остальных запросов. А метод formLogin()
обеспечивает аутентификацию приложения на основе форм.
Аналогичным образом, вы можете использовать Spring Data и Spring Web Flux, добавив соответствующие зависимости и настроив параметры в application.properties или application.yml файлах. А для Spring Actuator добавьте зависимость spring-boot-starter-actuator и настройте параметры привода в application.properties или application.yml файлах.
Подключение вашего приложения на Spring Boot к базе данных
Spring Boot предоставляет встроенную поддержку для подключения к различным базам данных, включая реляционные базы данных (такие как MySQL, PostgreSQL и Oracle) и базы данных NoSQL (такие как MongoDB и Cassandra).
Одним из наиболее распространённых способов подключения к базе данных в Spring Boot является использование модуля Spring Data JPA (Java Persistence API). Этот модуль обеспечивает последовательный и простой способ взаимодействия с базами данных с использованием стандарта JPA.
Чтобы использовать Spring Data JPA в вашем приложении, вам нужно будет добавить зависимость spring-boot-starter-data-jpa к вашему проекту и настроить источник данных в application.properties или application.yml файлах.
Вот пример того, как настроить подключение к базе данных MySQL в Spring Boot:
- 1. Добавьте зависимости spring-boot-starter-data-jpa и mysql-connector-java в свой проект.
- 2. В application.properties или application.yml файлах, настройте источник данных, добавив следующие свойства:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
Развёртывание приложения на Spring Boot
Развёртывание приложения на Spring Boot может быть выполнено различными способами, в зависимости от ваших конкретных требований и среды, в которой вы это осуществляете. Некоторые из наиболее распространенных способов развёртывания приложения на Spring Boot включают:
- Запуск приложения как отдельного файла jar или war: Это самый простой способ развёртывания приложения Spring Boot. Это может быть сделано с помощью плагинов Spring Boot Maven или Gradle для упаковки приложения в виде отдельного файла jar или war. Как только приложение упаковано, его можно запустить с помощью команды
java -jar
. - Развёртывание на веб-сервере: приложения Spring Boot также могут быть развёрнуты на веб-сервере, таком как Apache Tomcat или Jetty. Это можно сделать, упаковав приложение в виде файла war и развернув его на веб-сервере.
- Развёртывание у облачного провайдера: приложения Spring Boot можно легко развернуть у облачных провайдеров, таких как AWS, Azure и Google Cloud. Это можно сделать с помощью специфичных для облака инструментов и служб, таких как Elastic Beanstalk, App Engine и Cloud Foundry.
- Использование платформы контейнеризации: Приложения Spring Boot могут быть развернуты с использованием платформ контейнеризации, таких как Docker, Kubernetes и OpenShift. Это можно сделать, создав Docker-образ приложения и развернув его на платформе контейнеризации.
Развёртывание на сервере приложений
: Приложения Spring Boot могут быть развёрнуты на сервере приложений, таком как WildFly, JBoss EAP и WebLogic. Это можно сделать, упаковав приложение в виде файла war и развернув его на сервере приложений.
Важно отметить, что процесс развёртывания может варьироваться в зависимости от конкретной среды и требований вашего приложения. Рекомендуется протестировать приложение в разных средах, прежде чем развёртывать его в производственной среде.
Для получения более подробных инструкций по развёртыванию приложения Spring на Boot вы можете обратиться к документации Spring Boot по адресу https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html .
Лучшие практики и устранение неполадок
При работе с Spring Boot существует несколько рекомендаций и методов устранения неполадок, которые могут помочь вам создавать более совершенные приложения и быстрее устранять проблемы.
- Поддерживайте версию Spring Boot в актуальном состоянии: Spring Boot постоянно развивается, и регулярно выпускаются новые версии. Обновление версии Spring Boot вашего приложения может помочь обеспечить вам доступ к новейшим функциям и исправлениям ошибок.
- Используйте встроенное логирование Spring Boot: Spring Boot предоставляет встроенную поддержку логирования. Рекомендуется использовать эту функцию, а не стороннюю библиотеку. Это обеспечит лучшую интеграцию с экосистемой Spring Boot и упростит устранение неполадок.
- Используйте Spring Boot Actuator: Spring Boot Actuator предоставляет множество конечных точек, которые можно использовать для мониторинга вашего приложения и управления им. Это может помочь вам быстро выявлять и устранять проблемы.
- Поддерживайте актуальность зависимостей вашего приложения: Регулярное обновление зависимостей вашего приложения может помочь обеспечить вам доступ к новейшим функциям и исправлениям ошибок.
- Используйте Profiler: Spring Boot предоставляет встроенную поддержку профилирования вашего приложения, которая может помочь вам выявить узкие места в производительности и утечки памяти.
- Используйте поддержку тестирования Spring Boot: Spring Boot предоставляет встроенную поддержку тестирования, которая может помочь вам быстро и легко писать и запускать тесты для вашего приложения.
- Помните о конфигурации: Spring Boot позволяет вам настраивать ваше приложение с помощью различных методов, таких как properties файл, yml файл и аннотации. Помните о конфигурации, которую вы используете, и убедитесь, что она корректна.
- Ознакомьтесь с документацией: Spring Boot располагает обширной документацией, которая может помочь вам понять, как использовать фреймворк и решать распространённые проблемы.
Для устранения неполадок Spring Boot также предоставляет множество вариантов отладки, которые могут помочь вам быстро выявлять и устранять проблемы. Например, вы можете использовать привод Spring Boot для просмотра метрик приложения или включить отладку, добавив флаг — debug при запуске приложения. Кроме того, вы можете использовать Spring Boot DevTools для быстрого внесения изменений в ваше приложение и просмотра результатов в режиме реального времени.
Другим полезным инструментом для устранения неполадок является Spring Boot CLI, который позволяет быстро запускать и тестировать приложения Spring Boot из командной строки. Это может быть полезно для быстрого выявления и решения проблем без необходимости настройки полной среды разработки.
Заключение
В статье обсуждался процесс создания конечной точки RESTful API, использование встроенных функций Spring Boot, подключение к базе данных, развёртывание приложения Spring Boot, а также рекомендации и методы устранения неполадок.
Spring Boot предоставляет встроенную поддержку для подключения к базам данных, повышения безопасности приложения, работы с модулем Spring WebFlux и мониторинга приложения с помощью Spring Actuator. Кроме того, он может быть легко развёрнут в различных средах, включая автономные веб-серверы, облачных провайдеров, платформы контейнеризации и серверы приложений. Следуя рекомендациям, таким как обновление версии Spring Boot, использование встроенного ведения журнала Spring Boot и использование привода Spring Boot, разработчики могут создавать более совершенные приложения и быстрее устранять проблемы.
В заключение, Spring Boot – это мощная и гибкая платформа для создания веб-приложений с использованием фреймворка Spring. Она упрощает процесс разработки, предоставляя множество встроенных функций и инструментов, которые могут быть легко интегрированы в ваше приложение.
Просмотры: 1 488