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

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

Как отправлять email в Spring Boot (kotlin)

20 декабря 2021

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

Рассмотрим как отправлять email в Spring Boot. Вы также можете посмотреть исходники этого примера на github. Данный материал также доступен в формате видео на YouTube.

Для начала создадим новый gradle-проект (проще всего это сделать с помощью Spring Initializr). В проекте должна быть такая зависимость (пример для gradle):

implementation("org.springframework.boot:spring-boot-starter-mail")

Стартер spring-boot-starter-mail добавляет саму функциональность работы с email, причём можно использовать обёртку над стандартным классом Java.

Создадим новый сервис EmailService и внедрим в него JavaMailSender, а также пару свойств из конфига.

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

Загрузка файлов в restful-сервисе на Spring Boot

30 ноября 2021

Тэги: json, yaml, Spring, файлы, Spring Boot, rest, Kotlin, YouTube.

Предположим, перед нами стоит задача сделать в restful-сервисе, написанном на Kotlin и Spring Boot, эндпоинт для загрузки файлов с фронтэнда. Для пользователя такая загрузка выглядит как кнопка выбора файла с надписью «Обзор». Далее выбранный файл отправляется на бэк как поток бинарных данных. Этот поток имеет тип данных multipart/form-data.

Данный материал также доступен в формате видео на YouTube.

Эндпоинт

Для реализации эндпоинта в минимальном варианте в нашем проекте должна быть всего одна зависимость spring-boot-starter-web. Заготовку проекта на Kotlin можно сгенерить с помощью Spring Initializr.

Сам контроллер будет выглядеть примерно так:

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

Пакетная вставка с помощью Spring JDBC API

24 ноября 2021

Тэги: SQL, Spring, Kotlin, PostgreSQL, Spring Boot, YouTube.

Давайте рассмотрим, как обеспечить пакетную вставку (batch insert) большого количества данных с помощью Spring JDBC API. Допустим, нам нужно вставить 100 000 строк в таблицу в postgres. В качестве драйвера для работы с БД используем стандартный org.postgresql:postgresql.

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

Данный материал доступен также в формате видео на YouTube.

Модель данных

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

create table amount_history
(
    id       serial
        constraint amount_history_pk
            primary key,
    username varchar   not null,
    amount   numeric   not null,
    created  timestamp not null
);
Читать полностью...

Telegram-бот на Kotlin и Spring Boot

23 ноября 2021

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

В настоящее время чат-боты в Telegram не делал только ленивый. Они плотно вошли в нашу жизнь и почти у каждой компании есть бот, решающий какие-то бизнесовые задачи, тем самым разгружая «живых» сотрудников. После прочтения этой статьи вы сможете создать и запустить свой чат-бот в Telegram.

Также данный материал доступен в формате видео на YouTube. Пример готового приложения можно найти на github.

Регистрация бота в Telegram

Сперва нам нужно выбрать подходящее имя для бота и зарегистрировать его в Telegram. Регистрация нового бота происходит через бота по имени BotFather. Просто найдите его через поиск контактов Telegram. В чате вы всегда можете понять, что общаетесь с ботом, т.к. рядом с его именем есть подпись «bot». BotFather позволяет управлять вашими ботами в диалоговом режиме. Команды боту представляют собой текст, начинающийся со слеша.

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

Работа с Liquibase в Spring Boot

22 ноября 2021

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

Liquibase позволяет автоматизировать внесение обновлений в структуру БД. Каждое изменение описывается в декларативном стиле и версионируется. Обновления накатываются в заранее определённом порядке на данную БД, если они ещё не накатывались. Автоматизация процесса наката изменений на базу данных особенно важна, если у вас несколько различных экземпляров приложений и для каждого из них требуется поддерживать свою БД.

Данный материал также доступен в формате видео на YouTube.

Подключаем liquibase к приложению

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

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

Работа с событиями в Spring

6 ноября 2021

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

Spring «из коробки» предоставляет простой механизм работы с событиями, которые позволяют уменьшить связность компонентов системы. Событие, которое возникает в одной точке приложения, может быть перехвачено и обработано в любой другой части приложения благодаря таким сущностям как publisher и eventListener.

Для примера рассмотрим rest-приложение на Kotlin, в котором есть некий метод с бизнес-логикой. И мы хотим каждый вызов этого метода фиксировать. Чтобы не повышать связность кода и не делать явный вызов конкретного компонента, мы можем публиковать событие в нашей системе и любые компоненты, которые будут «прослушивать» тип такого события, смогут выполнить дополнительные действия.

Данный материал также доступен в формате видео на Youtube.

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

Запуск задач по расписанию в Spring Boot проекте на Kotlin (видео)

8 октября 2021

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

На нашем youtube-канале вышло видео о том, как запускать задачи по расписанию в Spring Boot. В качестве примера рассмотрим gradle-проект на Kotlin.

Мы будем использовать аннотацию @Scheduled. Она имеет несколько параметров. Вначале рассмотрим, как запускать задачи с фиксированным интервалом с помощью fixedDelay в миллисекундах. Затем научимся выносить настройки запуска в конфиг с помощью fixedDelayString. Ну и наконец, если нам важно запускать задачи в конкретное время дня, то для этих целей будем использовать cron-выражение.

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

Restful-сервис на Spring JDBC и Kotlin (серия видео)

23 сентября 2021

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

На нашем youtube-канале опубликована целая серия видео о том, как шаг за шагом создать restful-сервис на основе Spring Boot.

В качестве примера рассматриваем проект на Kotlin. Для взаимодействия с БД используем Spring JDBC API. В качестве базы данных выбрали postgres. Исходники проекта доступны на github.

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

Видео о работе с конфигами в Spring Boot

26 августа 2021

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

Ранее я писал статью Сравнение форматов конфига в Spring Boot. В ней рассказывается про различные форматы конфига (обычный текстовый файл, xml и yaml) и то, как с ними работать в Spring Boot.

Сегодня я залил видео, в котором наглядно показываю различные форматы и то, как разделять настройки приложения в зависимости от профиля (test/prod). В статье код приводился на Java, а видео я решил снять на примере Kotlin.

Любые вопросы пишите в комментариях: либо здесь, либо прямо на YouTube. Также не забывайте подписываться на канал и ставить лайки, чтобы ролик смогло посмотреть как можно большее количество человек.

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

Видео по Spring Data JPA и Kotlin: "один-ко-многим"

25 августа 2021

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

Продолжаем цикл видео о создании типового приложения гео-данных с помощью Spring Data JPA. Код пишем на Kotlin. В этой части я расскажу о том, как связывать две сущности в БД postgres с помощью отношения «один-ко-многим» (one-to-many). У нас уже есть сущность «Страна», к которой мы добавим новую сущность «Город». С одной страной может быть связано несколько городов (отсюда и название отношения).

Также вы узнаете, как в Spring Data JPA можно решить проблему N+1, когда за один запрос нужно подгрузить из БД и родительскую сущность, и все связанные с ней дочерние.

Если после просмотра видео у вас остались вопросы, смело задавайте их в комментариях под видео или на этой странице - я с удовольствием отвечу. Также не забывайте ставить лайки, чтобы видео посмотрело как можно большее количество человек и подписывайтесь на канал, чтобы не пропустить обновления. Исходники рассматриваемого проекта доступны по ссылке на github.

Все видео из серии можно найти в плейлисте.

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

Далее ❯