- PVSM.RU - https://www.pvsm.ru -
Всем привет, на связи команда Explyt. Как известно наша компания предоставляет целую экосистему плагинов для IDEA: это и плагин [1] для поддержки Spring, а также Explyt плагин [2] для написания кода, генерации тестов и интеграции с AI, который теперь также доступен [3] для PyCharm и GoLand. Нам пришла в голову идея - а почему бы не расширить функциональность Spring плагина с помощью AI ассистента, который есть в Explyt [4]. И если вы используете оба наших плагина, то у вас появятся дополнительные возможности для Spring, позволяющие достаточно хорошо решать типовые задачи, которые возникают в процессе работы, с помощью AI, о которых мы подробно расскажем далее.
Строим CRUD-эндпоинт с AI-напарником за 5 минут
Давайте начистоту: сколько времени у вас как у Spring-разработчика уходит не на решение сложных бизнес-задач, а на механическое создание однотипного кода?
Представьте типичную ситуацию: прилетает задача на новый CRUD-эндпоинт. Что дальше? Создать скрипт для новых БД сущностей, руками создаете JPA Entity, потом DTO, чтобы случайно не засветить лишнего наружу. После этого — репозиторий, сервисный слой и, наконец, сам REST-контроллер. Десятки файлов, сотни строк кода, который вы писали уже тысячу раз. Знакомо?
Каждая из этих операций по отдельности проста, но вместе они сливаются в часы рутины, отнимая время и силы от того, где действительно нужен наш интеллект. Мы в команде Explyt решили, что так быть не должно, и сегодня покажем, как можно сократить этот путь с нескольких часов до нескольких минут с помощью AI-напарника.
Все начинается со схемы данных. Допустим у нас есть SQL-скрипт, описывающий таблицу Employees. Раньше мы бы открыли этот файл на одном мониторе и начали бы вручную писать Java-класс на другом. Теперь мы просто кликаем правой кнопкой мыши по файлу и выбираем Explyt Spring AI Actions -> Convert Liquibase/Flyway File to Entity. Через несколько секунд мы получаем готовый класс:
Данный Action работает для любого Liquibase/Flyway/SQL файла.
БД скрипт для схемы данных также можно создать с помощью нашего AI агента, о котором у нас была статья [5]. Для данной операции мы решили не создавать готовый Action т.к. тут очень много переменных параметров - тип БД, тип тула Liquibase/Flyway, формат Liquibase файла (xml, yml и прочее) и вы можете сами написать в случае необходимости нужный вам промпт.
Отдавать 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 [6] от Vlad Mihalcea в стандартное меню: Code/Generate. Кстати, данная функция реализована без AI и доступна в Spring плагине сразу:

Допустим, у нас есть Spring RestController. Чтобы frontend-команда и тестировщики могли с ним работать, нужна документация. Кликаем по файлу контроллера и выбираем Explyt AI Actions -> Convert Spring Controller to OpenAPI File.
Ассистент анализирует эндпоинты, параметры и DTO-модели и генерирует готовую OpenAPI спецификацию. Доступно также и обратное преобразование, для случая если вам нужно интегрироваться со сторонним сервисом для которого есть OpenAPI документация.
В нашем плагине уже есть интеграция с OpenAPI. Более того, на этом механизме у нас реализован наш веб-клиент [7]. Но мы также решили добавить генерацию документации по Rest Controllers с помощью AI и наоборот из OpenAPI в Spring Rest Controllers. Так как наша программная реализация работает только в одну сторону и требует дополнительных усилий на разработку.
Генерация Spring конфигов: Kafka & Security
В Spring Boot проекты мы добавили возможность генерации Kafka и Security конфигов с помощью AI. Да он не всегда на 100% справляется с данной задачей так как это гораздо более сложные вещи чем предыдущие примеры, но вы гарантировано получаете готовый boilerplate код, который можно легко доработать под свой проект. И это кстати тоже можно сделать с помощью AI ассистента: его можно попросить исправить полученный код.
Kafka:
Security:
HTTP: конвертация Curl & Postman форматов в RFC 7230 [8]
В нашем Spring плагине уже реализована [9] поддержка http/rest файлов, почти как в IntelliJ IDEA Ultimate, нужно лишь в настройках прописать нужную вам CLI реализацию: httpyac [10] или IDEA HTTP Client CLI [11]. Теперь вам доступна конвертация в данный формат запросов из postman коллекций или curl.
Конвертация properties в yaml и обратно
Ну и на десерт добавили конвертацию для разных форматов Spring настроек. Так например Spring Initializer [12] генерирует проект с настройками в формате properties, но если вы предпочитаете yaml, то сможете без проблем выполнить данное преобразование и обратно.

Мы верим, что AI-ассистенты — это не замена разработчику, а мощный инструмент, который берет на себя самую скучную и повторяющуюся работу, освобождая наше время для архитектуры, оптимизации и решения сложных задач.
А с какими еще рутинными задачами в Spring вы сталкиваетесь ежедневно? Что бы вы хотели автоматизировать в первую очередь? Будем рады обсудить в комментариях!
Скачать последнюю версию Spring плагина можно с нашего сайта [13] или напрямую с GitHub Releases [14]. Для багрепортов и фичриквестов - GitHub Issues [15] и Telegram-чат [16] с командой Explyt Spring плагина.
Скачать плагин Explyt можно с JetBrains marketplace [17] и также с нашего сайта. [18]Для обратной связи – GitHub Issues [19] и Telegram-чат [20]с командой Explyt плагина.
Приглашаем вас попробовать наши плагины, а также делиться своими отзывами и предложениями. Ваша обратная связь поможет нам сделать инструмент более полезным и удобным. Также напоминаем, что Spring плагин имеет открытый исходный код, который доступен на GitHub [21].
Автор: grisha9
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/java/431045
Ссылки в тексте:
[1] плагин: https://explyt.ai/docs/ru/category/explyt-spring?utm_campaign=springai&utm_source=habr
[2] плагин: https://explyt.ai/ru?utm_campaign=springai&utm_source=habr
[3] доступен: https://habr.com/ru/companies/explyt/posts/947372/
[4] Explyt: https://explyt.ai/en?utm_campaign=springai&utm_source=habr
[5] статья: https://habr.com/ru/companies/explyt/articles/936992/
[6] best practice: https://vladmihalcea.com/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/
[7] веб-клиент: https://habr.com/ru/companies/explyt/articles/874236/
[8] RFC 7230: https://efim360.ru/rfc-7230-protokol-peredachi-giperteksta-http-1-1-sintaksis-soobshheniya-i-marshrutizacziya/
[9] реализована: https://habr.com/ru/companies/explyt/articles/884280/
[10] httpyac: https://httpyac.github.io/guide/installation%5C_cli.html
[11] IDEA HTTP Client CLI: https://www.jetbrains.com/help/idea/http-client-cli.html
[12] Spring Initializer: https://start.spring.io/
[13] нашего сайта: https://explyt.ai/docs/ru/explyt-spring/download
[14] GitHub Releases: https://github.com/explyt/spring-plugin/releases/
[15] GitHub Issues: https://github.com/explyt/spring-plugin/issues/new/choose
[16] Telegram-чат: https://t.me/explytspring
[17] JetBrains marketplace: https://plugins.jetbrains.com/plugin/27979-explyt
[18] сайта. : https://explyt.ai/ru/download?utm_source=release_post&utm_medium=habr&utm_campaign=explyt4.1
[19] GitHub Issues: https://github.com/explyt/explyt-test/issues/new/choose
[20] Telegram-чат : https://t.me/explyttest
[21] GitHub: https://github.com/explyt/spring-plugin
[22] Источник: https://habr.com/ru/companies/explyt/articles/944266/?utm_campaign=944266&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.