- BrainTools - https://www.braintools.ru -

Нейросети в Spring-разработке: убираем рутину, а не интеллект

Всем привет, на связи команда 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-контроллер. Десятки файлов, сотни строк кода, который вы писали уже тысячу раз. Знакомо?

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

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

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

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

БД скрипт для схемы данных также можно создать с помощью нашего AI агента, о котором у нас была статья [6]. Для данной операции мы решили не создавать готовый 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 [7] от Vlad Mihalcea в стандартное меню: Code/Generate. Кстати, данная функция реализована без AI и доступна в Spring плагине сразу:

Нейросети в Spring-разработке: убираем рутину, а не интеллект - 1

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

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

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

В нашем плагине уже есть интеграция с OpenAPI. Более того, на этом механизме у нас реализован наш веб-клиент [8]. Но мы также решили добавить генерацию документации по 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 [9] 

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

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

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

Нейросети в Spring-разработке: убираем рутину, а не интеллект - 2

Заключение

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

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

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

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

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

Автор: grisha9

Источник [23]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/19645

URLs in this post:

[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] интеллект: http://www.braintools.ru/article/7605

[6] статья: https://habr.com/ru/companies/explyt/articles/936992/

[7] best practice: https://vladmihalcea.com/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/

[8] веб-клиент: https://habr.com/ru/companies/explyt/articles/874236/

[9] RFC 7230: https://efim360.ru/rfc-7230-protokol-peredachi-giperteksta-http-1-1-sintaksis-soobshheniya-i-marshrutizacziya/

[10] реализована: https://habr.com/ru/companies/explyt/articles/884280/

[11] httpyac: https://httpyac.github.io/guide/installation%5C_cli.html

[12] IDEA HTTP Client CLI: https://www.jetbrains.com/help/idea/http-client-cli.html

[13] Spring Initializer: https://start.spring.io/

[14] нашего сайта: https://explyt.ai/docs/ru/explyt-spring/download

[15] GitHub Releases: https://github.com/explyt/spring-plugin/releases/

[16] GitHub Issues: https://github.com/explyt/spring-plugin/issues/new/choose

[17] Telegram-чат: https://t.me/explytspring

[18] JetBrains marketplace: https://plugins.jetbrains.com/plugin/27979-explyt

[19] сайта. : https://explyt.ai/ru/download?utm_source=release_post&utm_medium=habr&utm_campaign=explyt4.1

[20] GitHub Issues: https://github.com/explyt/explyt-test/issues/new/choose

[21] Telegram-чат : https://t.me/explyttest

[22] GitHub: https://github.com/explyt/spring-plugin

[23] Источник: https://habr.com/ru/companies/explyt/articles/944266/?utm_source=habrahabr&utm_medium=rss&utm_campaign=944266

www.BrainTools.ru

Rambler's Top100