Статьи
YouTube-канал
Отзывы

Статьи с тэгом «Spring Boot»

Spring Initializr: создаём проект на Java в Idea Ultimate

22 августа 2021

Тэги: Java, Spring Boot, Java 16, Apache, maven, Spring, PostgreSQL, YouTube, новости.

Ранее я уже снимал видео о том, как создавать с нуля проект на Spring и Java с помощью сервиса Spring Initializr, который предоставляет интерфейс для генерации заготовки проекта с добавлением стандартных зависимостей.

Один из подписчиков моего YouTube-канала попросил выложить видео о том, как сделать то же самое, не покидая IntelliJ Idea Ultimate Edition. Так что если вы работаете именно в этой (платной) версии, то вам крупно повезло и создание заготовки проекта у вас займёт считаные секунды.

Видео как обычно, уже доступно на YouTube.

Кстати, не забывайте подписываться на канал!

Читать полностью...

RowMapper и ResultSetExtractor в Spring Boot

3 августа 2021

Тэги: Spring Boot, rest, SQL, PostgreSQL, Java 8.

Spring Boot предоставляет два интерфейса для обработки выборки из БД: RowMapper и ResultSetExtractor. Давайте разберём их назначение, а также выясним, чем они различаются на примере справочника городов и стран.

RowMapper

Чаще всего при работе со списками в restful-сервисах, построенных на Spring Boot, вы будете использовать RowMapper. Этот класс обрабатывает отдельно каждую запись, полученную из БД, и возвращает уже готовый объект - модель данных. В большинстве случаев его вполне хватает.

Создадим простенький rest-контроллер, который будет возвращать список всех стран, которые заведены у нас в БД. Определение таблицы в СУБД postgres выглядит следующим образом:

CREATE TABLE public.country
(
  id serial,
  name character varying(50) NOT NULL,
  CONSTRAINT country_pk PRIMARY KEY (id)
)

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

Добавим туда несколько стран для примера:

insert into country (name) values ('Германия'); -- id = 1
insert into country (name) values ('Франция');  -- id = 2
insert into country (name) values ('Италия');   -- id = 3
Читать полностью...

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

2 августа 2021

Тэги: Java, Java 11, YouTube, Apache, Spring, Spring Boot, новости, maven.

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

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

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

Читать полностью...

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

1 августа 2021

Тэги: YouTube, Kotlin, новости, gradle, Spring, Spring Boot.

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

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

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

Читать полностью...

Подключение Playground к GraphQL

10 апреля 2021

Тэги: gradle, Spring Boot, GraphQL, Kotlin, json.

В статье Обработка запросов с помощью GraphQL мы рассмотрели основные вопросы, связанные с выполнением запросов в GraphQL. До этого момента мы составляли запросы вручную в формате json и напрямую кидали их на сервер. Но не всегда под рукой есть удобный инструмент для выполнения POST-запросов. Кроме того, вы можете в принципе не знать, какие поля и методы GraphQL доступны на сервере. Поэтому к GraphQL можно прикрутить один из нескольких веб-интерфесов, который позволит выполнять тестовые запросы в наглядном виде.

Подключение Playground к проекту

Для примера возьмём такой инструмент как Playground. Просто добавим ещё одну зависимость playground-spring-boot-starter в уже существующий проект, который мы создали в прошлой статье.

Читать полностью...

Написание запросов в Spring Data JPA

4 ноября 2020

Тэги: SQL, Collections, Spring Boot, Spring Data, Spring, Kotlin, Hibernate, PostgreSQL.

В статье CrudRepository на Kotlin я рассказывал о том, как Spring Data позволяет быстро создавать слой взаимодействия с БД, поддерживающий все основные операции: создание, чтение, обновление и удаление. Для получения этой стандартной функциональности вам достаточно лишь определить класс-сущность, поля которой такие же как и в целевой таблице в БД, и интерфейс самого репозитория, который можно унаследовать от стандартного интерфейса CrudRepository. Реализовывать интерфейс при этом не нужно - Spring Data всё сделает за вас.

Помимо стандартных методов вы также можете добавить в этот интерфейс свои собственные. Причём если вы будете следовать соглашениям об именовании методов, то Spring Data будет автоматически генерировать по ним sql-запросы. То есть вы определяете запросы к БД в декларативном стиле. Это, во-первых, позволяет давать методам удобочитаемые имена, а во-вторых, позволяет абстрагироваться от конкретной СУБД и специфики написания запросов к ней.

Читать полностью...

CrudRepository на Kotlin

29 октября 2020

Тэги: Spring Boot, Spring Data, SQL, PostgreSQL, Kotlin, rest, gradle, Spring.

Ранее я уже писал статью CrudRepository в Spring Data, в которой рассматривался пример rest-сервиса, работающего с базой данных. Теперь хочу показать аналогичный пример, но вместо Java написать его на Kotlin, который стремительно набирает популярность. Rest-сервис состоит из трёх слоёв: слой работы с БД, сервисный слой и контроллер. Мы пойдём последовательно по слоям, начиная с нижнего.

В качестве примера возьмём сервис, работающий с музыкальными группами. У группы есть три основных параметра: название, количество участников и дата основания. Структура таблицы в postgres может выглядеть следующим образом:

create table band
(
  id serial,
  name character varying(50) not null,
  players_count integer not null,
  created date not null,
  constraint band_pk primary key (id)
);

Тип данных serial означает поле, значение которого автоматически увеличивается на 1 с каждой новой записью.

Заготовку проекта удобно сгенерить через Spring Initializr. Там достаточно выбрать тип проекта - gradle, язык - kotlin. В качестве dependency надо добавить Spring Web (функциональность rest-контроллеров), Spring Data JPA (работа с БД), Validation (валидация входящих rest-запросов) и PostgreSQL Driver (драйвер нашей СУБД). Затем нажимаем Generate - и вы уже скачали архив с заготовкой вашего проекта. В итоге файл build.gradle.kts в секции dependencies помимо стандартных должен также содержать следующие зависимости:

Читать полностью...

Spring Data Rest с примерами на kotlin

25 октября 2020

Тэги: Hibernate, Spring, Spring Boot, rest, SQL, PostgreSQL, gradle, Spring Data, Kotlin, json, yaml.

Ранее я уже приводил пример в статье CrudRepository на Kotlin, как Spring Data позволяет легко выполнять основные операции над сущностями в БД. Теперь пойдём ещё дальше и рассмотрим как Spring Data Rest позволяет избежать написания контроллеров и сервисной логики. Исходники тестового проекта также прилагаются к этой статье и доступны на github. Также доступен видеогайд.

Подключаем Spring Data Rest

Для начала создадим заготовку проекта. Проще всего это сделать с помощью Spring Initializr. В настройках выбираем в качестве языка Kotlin и в качестве сборщика Gradle. В dependency нам нужно последовательно добавить три зависимости: Spring Data JPA, Rest Repositories и PostgreSQL Driver. В итоге файл build.gradle.kts должен содержать, помимо стандартных, следующие зависимости:

Читать полностью...

Подключение Swagger к Spring Boot

3 октября 2020

Тэги: Spring Boot, Spring, gradle, Kotlin, YouTube.

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

Помимо данной статьи вы можете также посмотреть видеогайд на эту тему.

Подключение

Если ваше приложение основано на Spring Boot, для подключения swagger достаточно добавить всего лишь одну зависимость (пример для gradle):

Читать полностью...

Сравнение форматов конфига в Spring Boot

16 февраля 2020

Тэги: Spring Boot, Java, Collections, Spring, XML, json, yaml.

Spring Boot позволяет хранить настройки приложения в файле и получать к ним доступ в декларативном стиле. Этот файл может иметь один из трёх форматов: properties, xml и yaml. Как Spring будет интерпретировать формат файла, определяется его расширением. Далее мы рассмотрим плюсы и минусы каждого формата. В качестве примера предположим, что в конфиге мы храним число, текстовую строку на русском языке и список значений.

properties-файл

По умолчанию в Spring используется properties-конфиг. Имя файла должно начинаться со слова application и иметь расширение properties. Если вы не используете профили для разделения конфигов, то достаточно иметь файл application.properties.

# числовой параметр
some.test.numberValue=42
# текстовый параметр
some.test.textValue="Текстовый параметр из properties-файла"
# список значений
some.test.list[0]=one
some.test.list[1]=two
some.test.list[2]=three

В данном формате комментарии всегда начинаются с новой строки и с символа «#». Имя каждого параметра прописывается полностью (и это один из недостатков данного формата), затем идёт «=», затем само значение. Текстовые значения можно указывать как в кавычках, так и без них. Список значений, который в нашем приложении превратится в объект типа List, в конце имени каждого значения имеет индекс в квадратных скобках. Такой синтаксис похож на объявление массива.

Читать полностью...

❮ Назад Далее ❯