Всем привет, на связи команда Explyt. Как известно наша компания предоставляет целую экосистему плагинов для IDEA: это и плагин для поддержки Spring, а также Explyt плагин для написания кода, генерации тестов и интеграции с AI, который теперь также доступен для PyCharm и GoLand. Нам пришла в голову идея - а почему бы не расширить функциональность Spring плагина с помощью AI ассистента, который есть в Explyt. И если вы используете оба наших плагина, то у вас появятся дополнительные возможности для Spring, позволяющие достаточно хорошо решать типовые задачи, которые возникают в процессе работы, с помощью AI, о которых мы подробно расскажем далее.

Строим CRUD-эндпоинт с AI-напарником за 5 минут

Давайте начистоту: сколько времени у вас как у Spring-разработчика уходит не на решение сложных бизнес-задач, а на механическое создание однотипного кода?

Представьте типичную ситуацию: прилетает задача на новый CRUD-эндпоинт. Что дальше? Создать скрипт для новых БД сущностей, руками создаете JPA Entity, потом DTO, чтобы случайно не засветить лишнего наружу. После этого — репозиторий, сервисный слой и, наконец, сам REST-контроллер. Десятки файлов, сотни строк кода, который вы писали уже тысячу раз. Знакомо?

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

Шаг 1: От схемы к сущности. Генерируем JPA Entity из SQL

Все начинается со схемы данных. Допустим у нас есть SQL-скрипт, описывающий таблицу Employees. Раньше мы бы открыли этот файл на одном мониторе и начали бы вручную писать Java-класс на другом. Теперь мы просто кликаем правой кнопкой мыши по файлу и выбираем Explyt Spring AI Actions -> Convert Liquibase/Flyway File to Entity. Через несколько секунд мы получаем готовый класс:

Данный Action работает для любого Liquibase/Flyway/SQL файла. 

БД скрипт для схемы данных также можно создать с помощью нашего AI агента, о котором у нас была статья. Для данной операции мы решили не создавать готовый Action т.к. тут очень много переменных параметров - тип БД, тип тула Liquibase/Flyway, формат Liquibase файла (xml, yml и прочее) и вы можете сами написать в случае необходимости нужный вам промпт.

Шаг 2: От сущности к DTO. Безопасность и чистота API

Отдавать JPA Entity напрямую в API — плохая практика. Давайте создадим Data Transfer Object. Снова кликаем правой кнопкой мыши, но уже по файлу Employee.java, и выбираем Explyt AI Actions -> Convert Entity to DTO:

Здесь AI понимает контекст и может быть настроен на исключение определенных полей или добавление аннотаций валидации. Есть и обратное преобразование: на основе DTO создать JPA Entity. Данные операции DTO <-> JPA Entity можно вызывать для нескольких файлов сразу.

Также мы добавили генерацию equals/hashCode для JPA Entity на основе best practice от Vlad Mihalcea в стандартное меню: Code/Generate. Кстати, данная функция реализована без AI и доступна в Spring плагине сразу:

Шаг 3: От контроллера к документации. Генерируем OpenAPI

Допустим, у нас есть Spring RestController. Чтобы frontend-команда и тестировщики могли с ним работать, нужна документация. Кликаем по файлу контроллера и выбираем Explyt AI Actions -> Convert Spring Controller to OpenAPI File.

Ассистент анализирует эндпоинты, параметры и DTO-модели и генерирует готовую OpenAPI спецификацию. Доступно также и обратное преобразование, для случая если вам нужно интегрироваться со сторонним сервисом для которого есть OpenAPI документация.

В нашем плагине уже есть интеграция с OpenAPI. Более того, на этом механизме у нас реализован наш веб-клиент. Но мы также решили добавить генерацию документации по Rest Controllers с помощью AI и наоборот из OpenAPI в Spring Rest Controllers. Так как наша программная реализация работает только в одну сторону и требует дополнительных усилий на разработку. 

Больше, чем CRUD: решение других типовых "болей"

Генерация Spring конфигов: Kafka & Security

В Spring Boot проекты мы добавили возможность генерации Kafka и Security конфигов с помощью AI. Да он не всегда на 100% справляется с данной задачей так как это гораздо более сложные вещи чем предыдущие примеры, но вы гарантировано получаете готовый boilerplate код, который можно легко доработать под свой проект. И это кстати тоже можно сделать с помощью AI ассистента: его можно попросить исправить полученный код.

Kafka:

Security:

HTTP: конвертация Curl & Postman форматов в RFC 7230 

В нашем Spring плагине уже реализована поддержка http/rest файлов, почти как в IntelliJ IDEA Ultimate, нужно лишь в настройках прописать нужную вам CLI реализацию:  httpyac или IDEA HTTP Client CLI. Теперь вам доступна конвертация в данный формат запросов из postman коллекций или curl.

Конвертация properties в yaml и обратно

Ну и на десерт добавили конвертацию для разных форматов Spring настроек. Так например Spring Initializer генерирует проект с настройками в формате properties, но если вы предпочитаете yaml, то сможете без проблем выполнить данное преобразование и обратно.

Заключение

Мы верим, что AI-ассистенты — это не замена разработчику, а мощный инструмент, который берет на себя самую скучную и повторяющуюся работу, освобождая наше время для архитектуры, оптимизации и решения сложных задач.

А с какими еще рутинными задачами в Spring вы сталкиваетесь ежедневно? Что бы вы хотели автоматизировать в первую очередь? Будем рады обсудить в комментариях!

Скачать последнюю версию Spring плагина можно с нашего сайта или напрямую с GitHub Releases. Для багрепортов и фичриквестов - GitHub Issues  и Telegram-чат с командой Explyt Spring плагина. 

Скачать плагин Explyt можно с JetBrains marketplace  и также с нашего сайта. Для обратной связи – GitHub Issues и Telegram-чат с командой Explyt плагина.

Приглашаем вас попробовать наши плагины, а также делиться своими отзывами и предложениями. Ваша обратная связь поможет нам сделать инструмент более полезным и удобным. Также напоминаем, что Spring плагин имеет открытый исходный код, который доступен на GitHub.

Комментарии (0)