Тэги: Spring Boot, руководство, Kotlin, gradle, rest.
Ранее я уже публиковал статью Подключение Swagger к Spring Boot для создания документации по REST API. К сожалению, с последними версиями Spring Boot описанный там подход уже не работает, т.к. на смену springfox-swagger пришёл springdoc. По функционалу springdoc предоставляет всё то же самое, но аннотации для разметки классов и методов нужно использовать другие. Поэтому в данной статье подробно рассмотрим пример документирования REST API с помощью springdoc и его отличия от springfox.
Springdoc – это библиотека для проекта на Spring Boot, которая автоматически будет генерировать документацию по вашему REST API на основании исходного кода и специальных аннотаций. Таким образом, ваша документация будет всегда актуальной и её не нужно как-то дополнительно актуализировать каждый раз при изменении исходников.
Тэги: json, yaml, файлы, Spring Boot, rest, Kotlin, YouTube.
Предположим, перед нами стоит задача сделать в restful-сервисе, написанном на Kotlin и Spring Boot, эндпоинт для загрузки файлов с фронтэнда. Для пользователя такая загрузка выглядит как кнопка выбора файла с надписью «Обзор». Далее выбранный файл отправляется на бэк как поток бинарных данных. Этот поток имеет тип данных multipart/form-data.
Данный материал также доступен в формате видео на YouTube.
Для реализации эндпоинта в минимальном варианте в нашем проекте должна быть всего одна зависимость spring-boot-starter-web. Заготовку проекта на Kotlin можно сгенерить с помощью Spring Initializr.
Сам контроллер будет выглядеть примерно так:
Тэги: SQL, Spring, Kotlin, PostgreSQL, Spring Boot, YouTube.
Давайте рассмотрим, как обеспечить пакетную вставку (batch insert) большого количества данных с помощью Spring JDBC API. Допустим, нам нужно вставить 100 000 строк в таблицу в postgres. В качестве драйвера для работы с БД используем стандартный org.postgresql:postgresql.
Мы рассмотрим несколько вариантов, начиная с самого простого и заканчивая самым быстрым, постепенно улучшая нашу реализацию. Если вам нужен финальный вариант, листайте сразу к последнему.
Данный материал доступен также в формате видео на YouTube.
Допустим у нас есть такая таблица для хранения истории каких-то заказов:
Тэги: SQL, PostgreSQL, Spring Boot, gradle, Kotlin, yaml.
Liquibase позволяет автоматизировать внесение обновлений в структуру БД. Каждое изменение описывается в декларативном стиле и версионируется. Обновления накатываются в заранее определённом порядке на данную БД, если они ещё не накатывались. Автоматизация процесса наката изменений на базу данных особенно важна, если у вас несколько различных экземпляров приложений и для каждого из них требуется поддерживать свою БД.
Данный материал также доступен в формате видео на YouTube.
Рассмотрим работу с Liquibase на конкретном примере. С помощью Spring Initializr создадим заготовку нашего Spring Boot приложения (выбираем в качестве языка kotlin, а в качестве сборщика – gradle). В dependencies выберем компоненты Spring Web (функциональность rest-контроллеров), Spring Data JDBC (работа с БД), PostgreSQL Driver (драйвер нашей СУБД) и сам Liquibase Migration. В итоге файл build.gradle.kts в секции dependencies должен содержать следующие зависимости:
Тэги: Spring Boot, rest, Kotlin, YouTube, Spring.
Spring «из коробки» предоставляет простой механизм работы с событиями, которые позволяют уменьшить связность компонентов системы. Событие, которое возникает в одной точке приложения, может быть перехвачено и обработано в любой другой части приложения благодаря таким сущностям как publisher и eventListener.
Для примера рассмотрим rest-приложение на Kotlin, в котором есть некий метод с бизнес-логикой. И мы хотим каждый вызов этого метода фиксировать. Чтобы не повышать связность кода и не делать явный вызов конкретного компонента, мы можем публиковать событие в нашей системе и любые компоненты, которые будут «прослушивать» тип такого события, смогут выполнить дополнительные действия.
Данный материал также доступен в формате видео на Youtube.
Тэги: Spring, Spring Boot, Kotlin, YouTube, новости, gradle.
На нашем youtube-канале вышло видео о том, как запускать задачи по расписанию в Spring Boot. В качестве примера рассмотрим gradle-проект на Kotlin.
Мы будем использовать аннотацию @Scheduled. Она имеет несколько параметров. Вначале рассмотрим, как запускать задачи с фиксированным интервалом с помощью fixedDelay в миллисекундах. Затем научимся выносить настройки запуска в конфиг с помощью fixedDelayString. Ну и наконец, если нам важно запускать задачи в конкретное время дня, то для этих целей будем использовать cron-выражение.
Тэги: Spring Boot, YouTube, gradle, Kotlin, новости, Spring, PostgreSQL, rest.
На нашем youtube-канале опубликована целая серия видео о том, как шаг за шагом создать restful-сервис на основе Spring Boot.
В качестве примера рассматриваем проект на Kotlin. Для взаимодействия с БД используем Spring JDBC API. В качестве базы данных выбрали postgres. Исходники проекта доступны на github.
Тэги: Spring, yaml, YouTube, Kotlin, Java, новости, Spring Boot.
Ранее я писал статью Сравнение форматов конфига в Spring Boot. В ней рассказывается про различные форматы конфига (обычный текстовый файл, xml и yaml) и то, как с ними работать в Spring Boot.
Сегодня я залил видео, в котором наглядно показываю различные форматы и то, как разделять настройки приложения в зависимости от профиля (test/prod). В статье код приводился на Java, а видео я решил снять на примере Kotlin.
Любые вопросы пишите в комментариях: либо здесь, либо прямо на YouTube. Также не забывайте подписываться на канал и ставить лайки, чтобы ролик смогло посмотреть как можно большее количество человек.
Тэги: алгоритмы, Kotlin, Java.
Среди других алгоритмов сортировки «пузырьковая» является самой медленной. Однако при этом алгоритм достаточно прост для понимания. На практике вместо него используют другие алгоритмы сортировки. Про пузырьковую сортировку любят рассказывать при обучении программированию и любят спрашивать на собеседованиях.
Суть алгоритма заключается в том, что мы последовательно проходимся по массиву элементов, сравнивая текущий и предыдущий между собой. Если предыдущий больше текущего, то меняем их местами. Таким образом, элемент с наибольшим значением как бы «всплывает» в конец массива. Отсюда и название «пузырьковая сортировка».
Как известно, формат xml нечувствителен к отступам и пробелам между тэгами. Поэтому с целью уменьшения объема данных и без того многословный xml можно записать в одну строку. Тогда вы получите заметное уменьшение объёма, но при этом такой формат будет сложно просматривать.
Чтобы сделать его удобочитаемым, мы можем написать специальный метод, который будет считывать исходный xml, форматировать его по определённым правилам и возвращать новый xml в виде строки. Форматирование будем производить без сторонних библиотек стандартными средствами JDK.
Рассмотрим следующий пример на kotlin:
Kotlin, Java, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.