Статьи
Утилиты Telegram YouTube Отзывы

Статьи с тэгом «руководство»

Telegram-бот на Spring Boot

27 декабря 2023

Тэги: Spring Boot, Kotlin, gradle, YouTube, руководство, yaml.

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

Telegram-бот на Kotlin и Spring Boot

Пример готового приложения можно найти на github.

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

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

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

Value-классы

11 декабря 2023

Тэги: ООП, Kotlin, руководство.

Иногда в процессе разработки на Kotlin требуется обеспечить более узкую типизацию параметров, чем позволяют стандартные типы. Особенно, если метод принимает несколько параметров одинакового типа, но каждый параметр несёт разный смысл.

Описание задачи

Например, пусть у вас есть метод calculateDensity(), вычисляющий плотность вещества как массу, делённую на объём. Оба параметра передаём как тип Double:

fun calculateDensity(weight: Double, volume: Double): Double =
    weight / volume

Тогда вызов этого метода может выглядеть вот так:

fun main() {
    val density = calculateDensity(3.0, 2.0)
    println("Density: $density.")
}

Вроде всё тривиально, но без подсказок IDE довольно легко перепутать объём и плотность местами при вызове метода. И если такое произойдёт, компилятор вам никак не поможет.

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

Pattern matching в switch

17 ноября 2023

Тэги: Java, руководство, ООП.

В Java 21 наряду с SequencedCollection (см. SequencedCollection и SequencedSet и SequencedMap) из статуса preview в статус production-ready перешла ещё одна фича – шаблоны сравнения (pattern matching) для конструкции switch. Рассмотрим возможности этой конструкции на конкретных примерах.

Простой пример

Предположим, что мы пишем метод displayScale(), в котором надо определить количество знаков после запятой в переданном нам числе. Причём это число поступает на вход как самый базовый тип Object. Напомню, что базовым для всех чисел является класс Number. Его производными типами являются, например, целые числа Integer и числа с произвольной точностью BigDecimal.

Иерархия числовых классов в Java
Читать полностью...

Контракт интерфейса Comparable

6 мая 2023

Тэги: Collections, Java, руководство, ООП.

В языке программирования Java есть механизм сравнения объектов, который основан на интерфейсе Comparable и методе compareTo(). Этот механизм позволяет определить порядок сортировки объектов и использовать их в коллекциях, которые требуют сравнения элементов.

Контракт метода compareTo()

Интерфейс Comparable определяет единственный метод compareTo(), который сравнивает текущий объект с переданным в аргументе.

Контракт метода compareTo() состоит из трех основных правил:

  1. Если текущий объект меньше объекта, с которым он сравнивается, то метод должен возвращать отрицательное число.
  2. Если текущий объект больше объекта, с которым он сравнивается, то метод должен возвращать положительное число.
  3. Если текущий объект равен объекту, с которым он сравнивается, то метод должен возвращать ноль.
Читать полностью...

Spring Data JPA, REST и Kotlin: проекции

3 мая 2023

Тэги: Collections, Spring Data, Spring Boot, rest, Kotlin, YouTube, руководство, SQL.

В предыдущей статье Spring Data JPA, REST и Kotlin: "один-ко-многим", изменение данных мы научились изменять дочерние сущности городов при изменении родительской сущности страны. А сейчас давайте научимся выбирать из таблицы только те поля, которые нам реально нужны, а не всю сущность целиком. В Spring Data JPA есть такое понятие как проекции. Рассмотрим конкретный пример.

Список из названий стран

Давайте сделаем новый эндпоинт, который будет возвращать список названий всех стран, отсортированный по алфавиту. Кроме названий, других полей выводить не требуется. Опираясь на уже имеющиеся у нас знания из предыдущих статей, добавим в CountryRepository такой метод:

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

Spring Data Rest

30 апреля 2023

Тэги: Hibernate, Spring, Spring Boot, rest, SQL, PostgreSQL, gradle, Spring Data, Kotlin, json, yaml, YouTube, руководство.

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

Исходники тестового проекта, адаптированного под Spring Boot 3, доступны на github. Также доступен видеогайд.

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

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

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

Spring Data JPA, REST и Kotlin: "один-ко-многим", изменение данных

24 марта 2023

Тэги: Spring Data, Collections, YouTube, руководство, rest, Kotlin, Spring Boot.

В предыдущей статье Spring Data JPA, REST и Kotlin: "один-ко-многим", чтение данных мы добавили к родительской сущности «Страна» дочернюю сущность «Город». В итоге у нас получилось отношение «один-ко-многим». В продолжение этой темы научимся создавать, изменять и удалять города вместе со странами в рамках одного запроса от клиента.

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

Spring Data JPA, REST и Kotlin: "один-ко-многим", чтение данных

20 марта 2023

Тэги: Collections, Spring Boot, YouTube, PostgreSQL, руководство, Spring Data, Kotlin, SQL, rest.

В предыдущей статье Spring Data JPA, REST и Kotlin: обработка ошибок мы научились менять формат ответа при возникновении ошибки. А сегодня добавим в базу данных отношение «один-ко-многим». У нас уже имеется таблица country, которая содержит страны.

Содержимое таблицы country

Дочерняя таблица city

Давайте создадим новую таблицу city, которая будет содержать города. И добавим между этими таблицами связь через поле country_id в таблице city. То есть несколько разных городов могут ссылаться на одну и ту же страну. Это и есть отношение «один-ко-многим».

Диаграмма таблиц country и city
Читать полностью...

Spring Data JPA, REST и Kotlin: обработка ошибок

19 марта 2023

Тэги: json, Spring Boot, YouTube, gradle, rest, руководство, Kotlin.

В предыдущей статье Spring Data JPA, REST и Kotlin: создание, обновление, удаление мы научились изменять данные в базе с помощью Spring Data JPA. При обновлении и удалении мы сначала проверяем, что запись существует. И если она не найдена – кидаем стандартное исключение. Обеспечивается это поведение через элвис-оператор:

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

Spring Data JPA, REST и Kotlin: создание, обновление, удаление

16 марта 2023

Тэги: SQL, Spring Boot, руководство, YouTube, PostgreSQL, Kotlin, rest, Spring Data, json.

В предыдущей статье Spring Data JPA, REST и Kotlin: поиск записей мы научились искать записи по id и по части названия страны. Теперь рассмотрим, как реализовать создание записи, её обновление и удаление. Нам потребуется добавить в наше REST API три новых метода.

Data Transfer Object

Методы создания и обновления будут принимать на вход ранее созданную нами DTO (data transfer object), в которой будут указаны все параметры страны. Однако при создании id страны нам неизвестно, поэтому нужно модифицировать DTO так, чтобы оно допускало null в качестве id:

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

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