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

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

Inline-кнопки в telegram-боте

10 марта 2025

Тэги: Spring Boot, руководство, Kotlin, чат-боты.

В предыдущей статье Telegram-бот на Spring Boot мы написали telegram-бота на Kotlin и Spring Boot. Мы рассмотрели, как добавляются простые команды, команды с параметрами, а также научились отображать простые кнопки в клиентском приложении telegram.

Но обычные кнопки являются не более чем заранее подготовленными текстовыми сообщениями пользователя. Они не несут никакого контекста и потому не подходят для более сложных сценариев взаимодействия. Однако пришла пора добавить в наш бот чуть больше интерактива!

Добавляем поддержку обратных вызовов

Предположим, вы решили написать онлайн-квиз в виде Telegram-бота. Бот должен выдать вопрос и какие-то варианты ответа к нему. Если это делать с помощью обычных кнопок, то довольно сложно сопоставить ответ пользователя с конкретным вопросом, т.к. обычные кнопки не хранят контекст. Но есть встраиваемые (inline) кнопки, которые относятся непосредственно к сообщению. Они добавляют гораздо больше интерактива и именно их вы видели, когда регистрировали бота в BotFather.

inline-кнопки в Bot Father

Встроенные кнопки взаимодействуют с ботом в фоновом режиме при помощи обратных вызовов (callback). Поэтому имеет смысл создать отдельный набор классов и интерфейсов для их поддержки.

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

Telegram-бот на Spring Boot

9 марта 2025

Тэги: Spring Boot, Kotlin, gradle, YouTube, руководство, yaml, чат-боты, Docker.

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

Telegram-бот на Kotlin и Spring Boot

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

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

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

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

Spring AI: пишем telegram-bot для ChatGPT

2 марта 2025

Тэги: gradle, руководство, Kotlin, yaml, Spring Boot, нейросети, чат-боты.

Из этой статьи вы узнаете, как написать свой telegram-бот, который взаимодействует с нейросетью. Напишем его на Kotlin, причём таким образом, чтобы с нейросетью можно было вести диалог, т.е. рассмотрим, как сохранять контекст между сообщениями. Для взаимодействия с нейросетью будем использовать фреймворк Spring AI из эксосистемы Spring.

Spring AI

Spring AI при работе с нейросетями обеспечивает принципы проектирования экосистемы Spring, такие как переносимость и модульная конструкция. В Spring AI есть различные провайдеры к популярным нейросетям: DeepSeek, Google Vertex, Groq, Ollama и ChatGPT. Работу с последним мы и рассмотрим в данной статье. Однако надо заметить, что многие нейросети поддерживают унифицированный API, поэтому переход с одной нейросети на другую (например, на DeepSeek) благодаря Spring AI ограничится изменением пары параметров в конфиге.

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

Как быстро развернуть Spring Boot в облаке

1 марта 2025

Тэги: gradle, Spring Boot, руководство, Docker, devops.

После того как вы создали своё первое приложение на Spring Boot, вы можете задаться вопросом: как развернуть его на сервере, чтобы оно работало в режиме 24/7 и было доступно в интернете? Для этих целей можно создать виртуальный сервер, установить туда нужную ОС, установить java и, возможно, развернуть базу данных типа Postgres. После этого надо собрать jar-файл (можно и локально), загрузить его по ssh и запустить как Unix-сервис. Подобные шаги я описывал в статье Настройка Ubuntu под хостинг JVM приложения. Однако это неудобно и затратно по времени.

Более правильный вариант – это настроить конвейер CI/CD, чтобы не вручную закачивать jar-файл, а запускать сборку автоматически при отправке новых изменений в github. Однако для этого нужно обладать знаниями devops, и, что более критично, хороший конвейер потребляет много ресурсов при сборке, ибо тоже работает на сервере. Порой даже больше, чем будет потреблять собираемое им приложение.

Отсюда следует вывод, что для небольших проектов нецелесообразно разворачивать полноценный конвейер. Но тогда как получить непрерывную сборку и интеграцию и при этом потратить минимум усилий, избегая ручной работы? Об этом и поговорим далее.

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

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

10 февраля 2025

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

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

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

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

Spring Data Rest

2 февраля 2025

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

Ранее я уже приводил пример в статье 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 и H2 Database. H2 – это СУБД, которая работает в оперативной памяти и не требует установки. Однако при необходимости вы можете легко поменять настройки подключения и использовать другой драйвер, например, Postgres. При этом как-то править код приложения не потребуется.

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

Springdoc для документации REST API

20 января 2025

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

Ранее я уже публиковал статью про создание документации по REST API с помощью swagger. К сожалению, с последними версиями Spring Boot описанный там подход уже не работает, т.к. на смену springfox-swagger пришёл springdoc. По функционалу springdoc предоставляет всё то же самое, но аннотации для разметки классов и методов нужно использовать другие. Поэтому в данной статье подробно рассмотрим пример документирования REST API с помощью springdoc и его отличия от springfox.

Springdoc – это библиотека для проекта на Spring Boot, которая автоматически будет генерировать документацию по вашему REST API на основании исходного кода и специальных аннотаций. Таким образом, ваша документация будет всегда актуальной и её не нужно как-то дополнительно актуализировать каждый раз при изменении исходников.

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

Локализация текста в Spring Boot

10 декабря 2024

Тэги: файлы, Spring Boot, руководство, Kotlin, rest, gradle.

При разработке приложения, ориентированного на мировой рынок, сразу следует закладывать поддержку нескольких языков. Добавление новой локализации должно выполняться быстро и при этом не требовать значительного рефакторинга. К счастью, если вы разрабатываете приложение на Spring Boot, то реализовать такую поддержку довольно просто.

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

Кеширование в Spring Boot

19 ноября 2024

Тэги: Spring Boot, maven, Java, rest.

Spring Boot поддерживает простой механизм кеширования данных. Рассмотрим его на примере, исходники которого доступны на github.

Подключение зависимостей

Создадим стандартное приложение Spring Boot. Это удобно делать через Spring Initializr.

Добавим в pom.xml две зависимости:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Зависимость spring-boot-starter-web – это базовая функциональность нашего веб-приложения, в том числе поддержка rest-контроллеров. Зависимость spring-boot-starter-cache добавляет возможность кеширования.

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

Обработка ошибок в GraphQL

13 мая 2024

Тэги: Collections, Spring Boot, руководство, Kotlin, GraphQL, json.

Продолжаем цикл статей про работу с GraphQL в проекте, написанном на Kotlin и Spring Boot. В первой статье GraphQL в Spring Boot мы создали проект, который возвращает информацию о книгах и их авторах. Во второй части Мутации в GraphQL мы научились менять данные.

Обработка ошибок в Spring Boot Graphql

Теперь рассмотрим как можно обрабатывать ошибки в GraphQL и менять их формат.

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

Далее ❯